2011-05-29 66 views
1

32位和64位的JVM上的Java CRC32實現是否有區別? 我的問題是,我的客戶端應用程序(在32位平臺上)計算散列並將其與64位服務器應用程序計算的散列進行比較。 有時(並非總是)我得到不同的結果。32位和64位的Java CRC32實現有何區別

有誰知道這個問題可能是什麼?

在此先感謝!

+0

發佈服務器和客戶端的代碼。儘管結果是相同的,但impl本身是不同的。 – bestsss 2011-05-29 14:22:12

回答

2

你的意思是CRC32 class?

不,CRC-32是固定的algorithm,JVM版本和CPU類型都不應該對它有任何影響。實際上,CRC-32用於例如架構不可知的以太網中。

如果您知道顯示CRC-32不匹配的數據,請使用一些任意的CRC計算器對其進行檢查,如this之一。顯然無論是服務器端還是客戶端都在做錯誤的計算。

我的猜測是,在一些方面不是整個流/文件被處理(大概在文件末尾的幾個字節)。

+0

crc32是原生的,所以儘管結果是相同的,但impl不同 – bestsss 2011-05-29 14:21:22

+0

經過夜研究之後,我們在我們的自定義代碼中發現了問題。 – Philipp 2011-08-19 11:18:51