当前位置:首页 » 密码管理 » 字符串压缩加密

字符串压缩加密

发布时间: 2023-07-08 02:43:31

压缩算法进行字符串压缩

Deflater 是同时使用了LZ77算法与哈夫曼编码的一个无损数据压缩算法。

我们可以使用 java 提供的 Deflater 和 Inflater 类对 json 进行压缩和解压缩,下面是工具类

压缩前的字节长度为:1825
压缩后的字节长度为:284
压缩率为63.73%,压缩后体积为原来的36.27%

压缩前的字节长度为:1825
压缩后的字节长度为:307
压缩率为62.04%,压缩后体积为原来的37.95%,也是不错的!

Ⅱ 用java如何实现压缩字符串

package javase1.day02;
/**
* 1)一种字符串压缩算法
* str ="aaaabbccccddeaaa"
* 压缩为:"4a2b4c2d1e3a"
* 原理实现:
* str = "aaaabbccccddeaaa"
*
* c = str.charAt(i)//c是每个字符
* 1) 初始化
* StringBuilder buf = new StringBuilder();
* int count = 0;代表相同的字符个数
* char ch = str.charAt(0);代表正在统计的相同字符'a'
* 2) 从i=1开始迭代每个字符
* c = str.charAt(i);//c是每个当前字符
* 3) 检查当前字符c与被统计ch是否一致
* 如果一致 count++
* 否则(不一致)
* 向缓冲区buf增加count+ch
* count=0,ch=c;
* 3)没有下个字符就结束
* 4)还有字符串吗?回到2)
*
* 2)实现还原算法
* str = "4a2b4c2d1e3a";
* i
*/
public class Demo5 {
public static void main(String[] args) {
String s = comp("aaaawwwwe");
System.out.println(s);
// System.out.println(decomp(s));

}
public static String comp(String str){
int i = 1;
StringBuilder buf = new StringBuilder();
int count = 1;
char ch = str.charAt(0);
for(;;){
char c = i==str.length() ? '\10':str.charAt(i);
if(c==ch){
count++;
}else{
if(count == 1)
buf.append(ch);
else
buf.append(count).append(ch);
count=1;
ch = c;
}
i++;
if(i==str.length()+1){
break;
}
}
return buf.toString();

}
}

Ⅲ c++怎么压缩字符串

一个个读入字符,记住当前一个和上一个
如果当前和上一个相同,计数加一
不同那么把上一个和计数放入结果字符串,上一字符值替换成当前,计数设置为1
接收到换行或者eof时结束程序并输出

Ⅳ 使用C语言实现字符串的压缩。

/*
原串:111225555
压缩后:312245
原串:333AAAbbbb
压缩后:333A4b
原串:ASXDCdddddd
压缩后:1A1S1X1D1C6d
Pressanykeytocontinue
*/
#include<stdio.h>
#include<string.h>

char*CompressStr(chars[]){
chart[255];
inti=0,j,k=0;
while(s[i]){
j=i+1;
while(s[i]==s[j])++j;
t[k++]=j-i+'0';
t[k++]=s[i];
i=j;
}
t[k]='';
strcpy(s,t);
returns;
}

intmain(void){
chari,s[][20]={"111225555","333AAAbbbb","ASXDCdddddd"};
for(i=0;i<3;++i){
printf("原串:%s ",s[i]);
printf("压缩后:%s ",CompressStr(s[i]));
}
return0;
}

Ⅳ C语言求助:请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。

#include <stdio.h>

void stringZip(const char

*pInputStr, long lInputLen, char *pOutputStr)

{ int n=1;

char c,*p1=pInputStr,*p2=pOutputStr;

while(*p1)

{

c=*(p1++);

while(*p1==c){n++;p1++;}

if(n>1)

{

if(n>999){*(p2++)=48+n/1000; n/=10;}

if(n>99){*(p2++)=48+n/100; n/=10;}

if(n>9){*(p2++)=48+n/10; n/=10;}

*(p2++)=48+n;

}

*(p2++)=c;

n=1;

}

*p2='';

}

void main()

{ char s1[200],s2[200];

gets(s1);

stringZip(s1,strlen(s1),s2);

puts(s2);

}

Ⅵ 用python写一个程序实现字符串压缩的方法

import
StringIOimport
gzipcompresseddata
=
gzip方式压缩的字符串(html)compressedstream
=
StringIO.StringIO(compresseddata)gzipper
=
gzip.GzipFile(fileobj=compressedstream)data
=
gzipper.read()
#
data就是解压后的数据一个简单的例子1
import
urllib2
2
from
StringIO
import
StringIO
3
import
gzip
4

5
def
loadData(url):
6

request
=
urllib2.Request(url)
7

request.add_header('Accept-encoding',
'gzip')
8

response
=
urllib2.urlopen(request)
9

if
response.info().get('Content-Encoding')
==
'gzip':10

print
'gzip
enabled'11

buf
=
StringIO(response.read())12

f
=
gzip.GzipFile(fileobj=buf)13

data
=
f.read()14

else:15

data
=
response.read()16

return
data

Ⅶ 求javascript 字符串压缩算法

<HTML>
<HEAD>
<TITLE>Decision Helper</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">

<SCRIPT LANGUAGE="JavaScript">
<!--
function Compress(strNormalString)
{
alert("压缩前长度:" + strNormalString.length);
var strCompressedString = "";

var ht = new HashTable;
for(i = 0; i < 128; i++) {
var e = new HashTableElement;
e.key = i;
e.code = i;
ht.Insert(e);
}

var used = 128;
var intLeftOver = 0;
var intOutputCode = 0;
var pcode = 0;
var ccode = 0;
var k = 0;

for(var i=0; i<strNormalString.length; i++) {
ccode = strNormalString.charCodeAt(i);
k = (pcode << 8) | ccode;
if((intSearch = ht.Search(k)) != null) {
pcode = intSearch;
} else {
intLeftOver += 12;
intOutputCode <<= 12;
intOutputCode |= pcode;
pcode = ccode;
if(intLeftOver >= 16) {
strCompressedString += String.fromCharCode( intOutputCode >> ( intLeftOver - 16 ) );
intOutputCode &= (Math.pow(2,(intLeftOver - 16)) - 1);
intLeftOver -= 16;
}
if(used < 4096) {
used ++;
var e = new HashTableElement;
e.key = k;
e.code = used - 1;
ht.Insert(e);
}
}
}

if(pcode != 0) {
intLeftOver += 12;
intOutputCode <<= 12;
intOutputCode |= pcode;
}

if(intLeftOver >= 16) {
strCompressedString += String.fromCharCode( intOutputCode >> ( intLeftOver - 16 ) );
intOutputCode &= (Math.pow(2,(intLeftOver - 16)) - 1);
intLeftOver -= 16;
}

if( intLeftOver > 0) {
intOutputCode <<= (16 - intLeftOver);
strCompressedString += String.fromCharCode( intOutputCode );
}

alert("压缩后长度:" + strCompressedString.length);
return strCompressedString;
}

function Decompress(strCompressedString)
{
var strNormalString = "";
var ht = new Array;

for(i = 0; i < 128; i++)
{
ht[i] = String.fromCharCode(i);
}

var used = 128;
var intLeftOver = 0;
var intOutputCode = 0;
var ccode = 0;
var pcode = 0;
var key = 0;

for(var i=0; i<strCompressedString.length; i++) {
intLeftOver += 16;
intOutputCode <<= 16;
intOutputCode |= strCompressedString.charCodeAt(i);

热点内容
滑板鞋脚本视频 发布:2025-02-02 09:48:54 浏览:433
群晖怎么玩安卓模拟器 发布:2025-02-02 09:45:23 浏览:557
三星安卓12彩蛋怎么玩 发布:2025-02-02 09:44:39 浏览:744
电脑显示连接服务器错误 发布:2025-02-02 09:24:10 浏览:537
瑞芯微开发板编译 发布:2025-02-02 09:22:54 浏览:147
linux虚拟机用gcc编译时显示错误 发布:2025-02-02 09:14:01 浏览:240
java驼峰 发布:2025-02-02 09:13:26 浏览:652
魔兽脚本怎么用 发布:2025-02-02 09:10:28 浏览:538
linuxadobe 发布:2025-02-02 09:09:43 浏览:212
sql2000数据库连接 发布:2025-02-02 09:09:43 浏览:726