4

我正在使用lz-string.js的 LZString.compressToBase64 函数,需要在服务器端解压/压缩数据。

明显的解决方案似乎是lz_string_csharp 但我担心

这个说法:

如果您只使用常规的 Javascript 'compress' 函数,那么根据字符串中的数据,它不会在 C# 端正确解压缩。

但是,如果您正在使用此 C# 版本中内置的“压缩”功能,那么您应该可以使用包含的常规“解压缩”功能。

关于这个报告的问题: c# version of compressToBase64 possible bug in c# version of compressToBase64

4

2 回答 2

1

您提供的链接中的完整描述说您应该能够使用“compressToUTF16”并且它将始终有效,而不仅仅是“压缩”,这并不总是有效。

我已经亲自测试过它并看到它有效。

(虽然我在 C# 文件中将 Context_Compress_Data.str 字段从字符串更改为 StringBuilder,因为它运行速度太慢。之后,一个 8 MB JSON 文件只用了 8 秒,压缩到原始大小的 7% .)

于 2015-03-06T07:00:15.973 回答
0

我们通过 enc1 = enc2 = enc3 = enc4 = 0;在下面的两行之间添加来解决此问题(在 stringbuilder 版本之前的原始文件中的第 580 行)

据我记得,这个错误是由 enc1、enc2 等的值引起的……在每个循环开始时没有被重置,所以有时循环的新迭代有上一轮的错误值。

  i += 3;

                    enc1 = enc2 = enc3 = enc4 = 0;

                    enc1 = (int)(Math.Round(chr1)) >> 2;
于 2017-03-15T10:10:05.587 回答