Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.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
Javascript 客户端从C#压缩字符串解压缩回字符串_Javascript_C#_Pako - Fatal编程技术网

Javascript 客户端从C#压缩字符串解压缩回字符串

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

我有一些大数据集,我想在发送给我的客户之前压缩它们。压缩工作

利用这段代码将我的数据转换成一个漂亮的小Base64字符串:

示例:string mytest=“这是一些测试文本。”

在客户方面,我需要把整个事情向后看

我可以使用()将base64字符串转换回字节数组:

然后使用pako.js我可以压缩gzip内容:

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