2011-05-29 138 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