我的程序发送从C#压缩数据到Java。在C#中,压缩数据从DotNetZip的Ionic.Zlib.GZipStream.CompressBuffer
方法返回为byte []。该字节[]用于构造从C#发送的MemoryStream。发送从C#的无符号字节,再次接收符号字节在Java中
在Java中,流由GZIPInputStream.read
方法使用,并写入另一个字节[],最终用于重建原始未压缩数据(现在为文本,但最终会成为图像)。在我的测试中,我发现对于包含非常大数字的数据集,我没有获取所有数据,这使我了解了已签名类型和未签名类型之间的区别。从我的谷歌搜索每个人似乎都建议转换为在Java端诠释,这样的信息可以被正确检索,但据我所知,是使用一个int []在GZIPInputStream合适流的建设没有这样的方式。我试图(愚蠢)在C#中将字节转换为sbyte,但MemoryStream不需要sbyte []来构建。
我该怎么办?看来我是S.O.L.我正在积极研究这个,但我想我也会问Stack。
作为参考,这里是从我有关同一个项目的早期帖子。我设法通过在该职位的问题要解决:Sending gzipped data over a network from C# to Java
编辑:为了澄清,我提到,数据仅仅是文字,但它没有工作了非常大的数字。这些数字由C#从Access读取(数字字段为文本字段),作为二进制压缩数据发送,然后在Java中重构为文本。
是的,这有很大帮助。谢谢。我正在寻找你发布的链接,我也编辑了我的原始帖子,以澄清我的意思。 – Fam