我读了一个关于使用pako.js解压缩javascript中字符串的话题
ZLIB Decompression - Client Side
http://jsfiddle.net/9yH7M/1/
这是解压缩的代码
// Get some base64 encoded binary data from the server. Imagine we got this:
var b64Data = 'H4sIAAAAAAAAAwXB2w0AEBAEwFbWl2Y0IW4jQmziPNo3k6TuGK0Tj/ESVRs6yzkuHRnGIqPB92qzhg8yp62UMAAAAA==';
// Decode base64 (convert ascii to binary)
var strData = atob(b64Data);
// Convert binary string to character-number array
var charData = strData.split('').map(function(x){return x.charCodeAt(0);});
// Turn number array into byte-array
var binData = new Uint8Array(charData);
// Pako magic
var data = pako.inflate(binData);
// Convert gunzipped byteArray back to ascii string:
var strData = String.fromCharCode.apply(null, new Uint16Array(data));
// Output to console
console.log(strData);
我想要一个压缩字符串的方法,输出可以通过上面的代码解压缩 怎么做呢
答案 0 :(得分:1)
b64Data
解压缩的代码可以简化:return pako.inflate(atob(b64Data), { to: 'string' });
b64Data
的代码:return btoa(pako.deflate(stringToCompress, { to: 'string' }));
答案 1 :(得分:0)
您可以执行以下操作:
var binData = pako.deflate( "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ".split("")
.map(function(x){return x.charCodeAt(0);}));
产量:
binData:Uint8Array(37)[120,156,115,116,114,118,113,117,115,247,240,244,242,246,241,245,243,15,8,12, 10、14、9、13、11、143、136、140、114、196、41、3、0、150、1、15、191]
var strData = String.fromCharCode.apply(null, pako.inflate(String.fromCharCode.apply(null, binData).split(""). map(function(x){return x.charCodeAt(0);})));
//yields back
“ ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ”