解压字符串
这个先要看看你的压缩方式,找到对应的解压方式就ok了。
如果解决了您的问题请采纳!
如果未解决请继续追问!
Ⅱ python怎么解压压缩的字符串数据
import StringIO
import gzip
compresseddata = gzip方式压缩的字符串(html)
compressedstream = StringIO.StringIO(compresseddata)
gzipper = gzip.GzipFile(fileobj=compressedstream)
data = gzipper.read() # data就是解压后的数据!
Ⅲ C语言 解压缩字符串
如果数据结构是数组的话,主要是要解决两个问题,一是统计重复的字符,二是确定数组压缩后每个元素在数组中所处的位置。
可以用一个指针遍历数组,另一个指针标记存储位置。
字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为
s="a1a2···an"(n>=0)。它是编程语言中表示文本的数据类型。
通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。
Ⅳ 字符串压缩与解压缩
由于精度问题,该算法的压缩能力有限,字符串长度不能过长,否则会出现溢出,压缩会出错。还有,忘了对空格键处理,所以你一旦输入空格就会结束字符串输入
#include<iostream>
#include<math.h>
#include<string>
#include<vector>
using namespace std;
struct node
{
char elem;
double weigh;
double low;
double high;
double rang;
};
////////////////////
double value(string &code)
{
double res=0;
for(int i=0;i<code.size();i++)
{
if(code[i]=='1')
res=res+pow(2,-(i+1));
}
return res;
}
/////////////////////
int search(vector<node> &array,char &e)
{
for(int i=0;i<array.size();i++)
{
if(array[i].elem==e)
return i;
}
return -1;
}
//////////////////////
void set(string &data,vector<node> &array)
{
cin>>data;
data=data+'$';
node temp;
for(int i=0;i<data.size();i++)
{
int f=0;
for(int j=0;j<array.size();j++)
{
if(array[j].elem==data[i])
{
array[j].weigh++;
f=1;
break;
}
}
if(f==1)continue;
temp.elem=data[i];
temp.weigh=1;
array.push_back(temp);
}
array[0].low=0;
array[0].rang=array[0].weigh/data.size();
array[0].high=array[0].low+array[0].rang;
for(i=1;i<array.size();i++)
{
array[i].low=array[i-1].high;
array[i].rang=array[i].weigh/data.size();
array[i].high=array[i].low+array[i].rang;
}
}
//////////////////////
void output(vector<node> &array)
{
cout<<"elem low high rang"<<endl;
for(int i=0;i<array.size();i++)
{
cout<<array[i].elem;
cout.width(10);
cout<<array[i].low;
cout.width(10);
cout<<array[i].high;
cout.width(10);
cout<<array[i].rang<<endl;
}
}
///////////
void getarith(string &data,vector<node> &array,vector<node> &arith)
{
node temp;
int t=search(array,data[0]);
temp=array[t];
arith.push_back(temp);
for(int i=1;i<data.size();i++)
{
temp.elem=data[i];
int t=search(array,data[i]);
temp.low=arith[i-1].low+array[t].low*arith[i-1].rang;
temp.rang=arith[i-1].rang*array[t].rang;
temp.high=temp.low+temp.rang;
arith.push_back(temp);
}
}
///////////////
void code(double low,double high,string &res)
{
while(value(res)<low)
{
string temp=res+'1';
if(value(temp)>high)
res=res+'0';
else
res=temp;
}
}
////////////
void decode(double math,vector<node> &array)
{
while(1)
{
for(int i=0;;i++)
{
if(math<array[i].high)
break;
}
if(array[i].elem=='$')break;
cout<<array[i].elem;
math=math-array[i].low;
math=math/array[i].rang;
}
}
//////////////////
int main()
{
string data;
vector<node> array;
set(data,array);
string result;
vector<node> arith;
/* array[0].elem='a';
array[0].low=0;
array[0].rang=0.2;
array[0].high=0.2;
array[1].elem='b';
array[1].low=0.2;
array[1].rang=0.1;
array[1].high=0.3;
array[2].elem='c';
array[2].low=0.3;
array[2].rang=0.2;
array[2].high=0.5;
array[3].elem='d';
array[3].low=0.5;
array[3].rang=0.05;
array[3].high=0.55;
array[4].elem='e';
array[4].low=0.55;
array[4].rang=0.3;
array[4].high=0.85;
array[5].elem='f';
array[5].low=0.85;
array[5].rang=0.05;
array[5].high=0.9;
array[6].elem='$';
array[6].low=0.9;
array[6].rang=0.1;
array[6].high=1;*/
getarith(data,array,arith);
cout<<"字符数据表为:"<<endl;
output(array);
cout<<"输入字符串的算术编码数据表为:"<<endl;
output(arith);
string res;
code(arith[arith.size()-1].low,arith[arith.size()-1].high,res);
cout<<"字符串的算术编码为:"<<endl;
cout<<res<<endl;
double math=value(res);
cout<<math<<endl;
cout<<endl<<"解码结果为:"<<endl;
decode(math,array);
cout<<endl;
system("pause");
return 0;
}
Ⅳ 输入wa字符串未知的解压方法
wa的字符串是weakauras2的配置文件。
然后在游戏中的聊天栏里输入命令:/WA来调出WA的设置页面。
在WA页面的右下角有一个导入字符串的功能,点开该选项,把你之前复制的字符串复制到里面,导入即可。
Ⅵ python怎么解压压缩的字符串数据
一个简单的例子
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
~如果你认可我的回答,请及时点击【采纳为满意回答】按钮
~~手机提问的朋友在客户端右上角评价点【满意】即可。
Ⅶ C语言 解压缩字符串
#include<stdio.h>
intmain()
{
chars[50],s1[100];
inti=0,j=0,k,n;
gets(s);//输入压缩后的字符串
while(s[i])
{
s1[j]=s[i];
//因为形式是先字符后数字,所以第一个肯定是字符,先赋入另一个数组以便后续操作。
i++;j++;//递增,开始处理下一位的数字
n=0;
while(s[i]>='0'&&s[i]<='9')//只要是数字就要进入循环统计
{
n*=10;
n+=s[i]-'0';
i++;
}
for(k=0;k<n-1;k++)
//因为解压缩的字符已经存入数组s1,所以只剩下n-1要再放入s1
s1[j+k]=s1[j-1];
if(n>0)//注意,一定要n>0因为有可能是连续字符,本来就没被压缩这时如果还把j加上n-1就反而是让j减小了。
j+=n-1;
}
s1[j]='