【发布时间】:2013-12-05 03:12:53
【问题描述】:
我的程序正在将压缩数据从 C# 发送到 Java。在 C# 中,压缩数据作为来自 DotNetZip 的Ionic.Zlib.GZipStream.CompressBuffer 方法的字节[] 返回。这个 byte[ ] 用于构造一个从 C# 发送的 MemoryStream。
在 Java 中,GZIPInputStream.read 方法使用流并写入另一个字节[],该字节最终用于重建原始的未压缩数据(现在是文本,但最终会变成图像)。在我的测试中,我发现对于包含非常大数字的数据集,我并没有获得所有数据,这让我了解了有符号和无符号类型之间的区别。从我的谷歌搜索来看,每个人似乎都建议在 Java 端转换为 int 以便可以正确检索信息,但据我所知,在为 GZIPInputStream 构建合适的流时没有这种方法可以使用 int[] .我尝试(愚蠢地)在 C# 中从 byte 转换为 sbyte,但 MemoryStream 不需要 sbyte[ ] 进行构造。
我能做什么?看来我是S.O.L。我正在积极研究这个,但我想我也会在 Stack 上提问。
作为参考,这是我之前发布的关于同一项目的帖子。我设法解决了该帖子中的问题:Sending gzipped data over a network from C# to Java
编辑:为了澄清,我提到数据只是文本,但它不适用于非常大的数字。这些数字由 C# 从 Access 以文本形式读取(数字字段是文本字段),以二进制压缩数据的形式发送,然后在 Java 中以文本形式重构。
【问题讨论】:
标签: c# java compression unsigned signed