Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gzip使用pako.js在javascript中创建字符串_Javascript_Gzip_Compression_Pako - Fatal编程技术网

Gzip使用pako.js在javascript中创建字符串

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

我能够使用pako.js在JavaScript中解压字符串

我想要一个压缩字符串和输出的方法,可以通过上面使用pako和gzip的代码进行解压缩

我如何才能做到这一点?

压缩:

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);