我的程序發送從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