1
2
你确定这和校验和有关吗? 在gzip格式中,32位校验和不是可选的。我不明白您所说的“数据是通过套接字接收的,因此校验和丢失”是什么意思。通过信鸽获取数据并不重要;如果它是有效的gzip流,那么它必须具有32位CRC。谁或是什么产生了源数据? gzip规范中有一个可选部分—16位校验和。(它的包含也不取决于gzip bytestream是如何创建的。)system.io.gzip stream类将欣然接受缺少此crc16的gzip流以及包含它的gzip流。 代码中还有其他一些问题。代码中的实际长度-这是什么?它当然不是保存解压数据的缓冲区长度。这是10倍,但10倍似乎很随意。对于非常可压缩的数据,您可能会超过10倍。我建议您在解压中使用流方法。 至于您是否能够处理每秒1次的解压,是的,system.io.gzipstream对于足够小的数据块来说足够快。很可能没有必要去本地的C/C++库。 PS: DotNetZip 库中包含一个开放源码的gzip流;您可以直接使用它,或者如果您愿意,您只需在需要的时候获取gzip内容即可。 |
2
1
只需使用deflatestream而不是gzipstream。 |
Alex · 配置文件校验和猜测(CRC) 7 年前 |
Will Haley · 为什么文件校验和会不一致地失败? 7 年前 |
Waxhead · Fletchers16校验和是否适用于小数据? 7 年前 |
assemblaj · 为什么我的代码不返回预期的和预先计算的校验和? 7 年前 |
Chris Barry · 如何构建字节数组帧并计算校验和 8 年前 |
Raf · 在python中计算哈希并将其添加到文件中 8 年前 |
user3535074 · 校验和比较能表明两个文件有多不同吗? 8 年前 |
crysoberil · 是否应始终依赖错误检测机制? 9 年前 |