Javascript 客户端从C#压缩字符串解压缩回字符串
我有一些大数据集,我想在发送给我的客户之前压缩它们。压缩工作 利用这段代码将我的数据转换成一个漂亮的小Base64字符串: 示例:string mytest=“这是一些测试文本。” 在客户方面,我需要把整个事情向后看 我可以使用()将base64字符串转换回字节数组: 然后使用pako.js我可以压缩gzip内容:Javascript 客户端从C#压缩字符串解压缩回字符串,javascript,c#,pako,Javascript,C#,Pako,我有一些大数据集,我想在发送给我的客户之前压缩它们。压缩工作 利用这段代码将我的数据转换成一个漂亮的小Base64字符串: 示例:string mytest=“这是一些测试文本。” 在客户方面,我需要把整个事情向后看 我可以使用()将base64字符串转换回字节数组: 然后使用pako.js我可以压缩gzip内容: var deflate = new pako.Deflate({ level: 1 }); deflate.push(uintArray, true); if (deflate.er
var deflate = new pako.Deflate({ level: 1 });
deflate.push(uintArray, true);
if (deflate.err) { throw new Error(deflate.err); }
最后,我应该能够将其转换回我的文本:
var encodedString = String.fromCharCode.apply(null, deflate.result)
var decodedString = decodeURIComponent(encodedString);
问题是,虽然我没有得到任何错误,但我没有得到预期的结果,这应该是原始字符串——“这是一些测试文本。”
输出如下(无法全部粘贴):
x g``æ
你知道我遗漏了什么吗?你需要在你的前端使用
pako.Inflate
。此外,在解码之前,您需要删除添加到前端
gzBuffer
前端的4字节大小
像这样的方法应该会奏效:
/“cookies统治世界”用您的c代码压缩
让sample=“FgAAAB+lcaaaabablzs/pzkwtviggqzulvkmlivsjpl8pjaqbkkn7rfgaaaa=”;
//解码base64并转换为Uint8阵列
设二进制=atob(样本);
让bytes=Uint8Array.from(binary,c=>c.charCodeAt(0));
//您在gzBuffer的开头追加了长度,因此需要删除这些字节
字节=字节。切片(4);
//将消息充气并将其转换为字符串
让充气=pako.充气(字节);
让message=String.fromCharCode.apply(null,充气);
控制台日志(消息)代码>
在pako,你不想给水流充气(减压)吗?@Jonathan是的,谢谢。我在试错中错过了这个。谢谢你的回答。工作完美。
var deflate = new pako.Deflate({ level: 1 });
deflate.push(uintArray, true);
if (deflate.err) { throw new Error(deflate.err); }
var encodedString = String.fromCharCode.apply(null, deflate.result)
var decodedString = decodeURIComponent(encodedString);