Pako是一个完整且现代的Zlib
端口。
这里有一个非常简单的示例,您可以从中开始工作。
获取pako.js,您可以像这样解压缩byteArray:
<html>
<head>
<title>Gunzipping binary gzipped string</title>
<script type="text/javascript" src="pako.js"></script>
<script type="text/javascript">
var charData = [31,139,8,0,0,0,0,0,0,3,5,193,219,13,0,16,16,4,192,86,214,151,102,52,33,110,35,66,108,226,60,218,55,147,164,238,24,173,19,143,241,18,85,27,58,203,57,46,29,25,198,34,163,193,247,106,179,134,15,50,167,173,148,48,0,0,0];
var binData = new Uint8Array(charData);
var data = pako.inflate(binData);
var strData = String.fromCharCode.apply(null, new Uint16Array(data));
console.log(strData);
</script>
</head>
<body>
Open up the developer console.
</body>
</html>
运行示例:http://jsfiddle.net/9yH7M/
或者,您可以在将数组发送为JSON或XML时对其进行base64编码,以减少开销。解码同理:
var b64Data = 'H4sIAAAAAAAAAwXB2w0AEBAEwFbWl2Y0IW4jQmziPNo3k6TuGK0Tj/ESVRs6yzkuHRnGIqPB92qzhg8yp62UMAAAAA==';
var strData = atob(b64Data);
var charData = strData.split('').map(function(x){return x.charCodeAt(0);});
var binData = new Uint8Array(charData);
var data = pako.inflate(binData);
var strData = String.fromCharCode.apply(null, new Uint16Array(data));
console.log(strData);
运行示例: http://jsfiddle.net/9yH7M/1/
若要进一步了解,这里是pako
API文档http://nodeca.github.io/pako/。