【问题标题】:Gzip a string in javascript using pako.js使用 pako.js 在 javascript 中压缩字符串
【发布时间】:2018-11-13 20:19:44
【问题描述】:

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

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

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

我该怎么做?

【问题讨论】:

  • 如果您只是按照the docs 中所写的内容进行操作,出了什么问题?请注意,pako 具有压缩/解压缩到/从字符串的选项,因此您的类型化数组不是必需的。
  • @ASDFGerte 我在做 var str ="Hello world"; var test = pako.gzip(new Uint8Array(str), {to: 'string'});警报(btoa(测试));对于任何字符串,我都会得到相同的输出“H4sIAAAAAAAAAAwMAAAAAAAAAAAAA=”,并且在解压缩输出后也无法取回原始字符串。我哪里错了?
  • 构建Uint8Array 的方式不起作用(始终为空)- 短时间调试测试会很快告诉您这一点。你可以解决这个问题,但更简单的方法是注意到在gzip(data[, options]) 中,数据的描述类型为“Uint8Array | Array | String”,这意味着你可以只做let test = pako.gzip(str, {to: 'string'});。还原过程就像pako.ungzip(test, { to: 'string' }); 一样简单。

标签: javascript gzip compression pako


【解决方案1】:

压缩:

let compressed_str = pako.gzip(str, {to: 'string'});

解压:

let original_str = pako.ungzip(compressed_str, { to: 'string' });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 2011-10-15
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多