import pako from 'pako'
// 解压
function unzip(b64Data: any){
// 字符串转base64
let strData = atob(b64Data)
// 将二进制字符串转换为字符数数组
const charData = strData.split('').map(function(x){return x.charCodeAt(0)})
// 将数字数组转换为字节数组
const binData = new Uint8Array(charData);
// 解压
const data: number[] = pako.inflate(binData);
// 将gunzipped byteArray转换回ascii字符串:
strData = String.fromCharCode.apply(null, Array.from(new Uint16Array(data)))
return strData;
}
// 压缩
function zip(str: any){
const binaryString = pako.gzip(str, { to: 'string' });
// 字符串转base64
return btoa(binaryString);
}
需要注意的是,字符串压缩后的长度和压缩前的长度比是一个曲线,原文越长则压缩收益越高,原文越短则有可能出现负收益