21

见标题。返回值是 32 位,对吧?为什么不返回一个int?

4

2 回答 2

23

因为如果它返回一个 int,一半的 CRC 将是负数。预期是 32 位 CRC 是无符号的,即 0..4294967295,它不能用 int 表示。

于 2013-06-12T23:19:26.377 回答
9

java.util.zip.CRC32实现Checksum接口,它需要一个long返回类型 for getValue(),因此需要long一个 32 位校验和;输出的高 32 位几乎肯定是 0。

于 2013-06-12T22:41:33.580 回答