Gzip使用pako.js在javascript中创建字符串
我能够使用pako.js在JavaScript中解压字符串 我想要一个压缩字符串和输出的方法,可以通过上面使用pako和gzip的代码进行解压缩 我如何才能做到这一点?压缩:Gzip使用pako.js在javascript中创建字符串,javascript,gzip,compression,pako,Javascript,Gzip,Compression,Pako,我能够使用pako.js在JavaScript中解压字符串 我想要一个压缩字符串和输出的方法,可以通过上面使用pako和gzip的代码进行解压缩 我如何才能做到这一点?压缩: let compressed_str=pako.gzip(str,{to:'string'}) 减压: let original_str=pako.ungzip(压缩的_str,{to:'string'})当你只是简单地执行上面写的操作时,会出现什么问题?请注意,pako有压缩/解压字符串的选项,因此不需要键入数组。@A
let compressed_str=pako.gzip(str,{to:'string'})代码>
减压:
let original_str=pako.ungzip(压缩的_str,{to:'string'})代码>当你只是简单地执行上面写的操作时,会出现什么问题?请注意,pako有压缩/解压字符串的选项,因此不需要键入数组。@ASDFGerte我正在执行var str=“Hello world”;var test=pako.gzip(新的Uint8Array(str),{to:'string'});警报(btoa(测试));对于任何字符串,我都会得到相同的输出“h4siaaaawmaaaaaaaaaaaa=”,并且在解压缩输出后也无法返回原始字符串。我哪里出错了?您构建Uint8Array
的方式不起作用(总是空的)-在短时间内调试测试会很快告诉您这一点。您可以解决这个问题,但更简单的方法是注意到在gzip(data[,options])
中,数据有一个描述的类型“Uint8Array | Array | String”,这意味着您可以只执行let test=pako.gzip(str,{to:'String')代码>。还原过程非常简单,如pako.ungzip(test,{to:'string'})
@ASDFGerte非常感谢!!它起作用了
// 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);