为什么java.util.zip.CRC32.getValue()返回long,而不是int?

Ste*_*veo 13 crc32 long-integer

看标题.返回值是32位,对吗?为什么不返回一个int?

Mar*_*ler 15

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

  • Java 语言不支持无符号整数类型这一事实在此无关紧要。有符号或无符号的任何 32 位值都可以存储在 Java int 中,其大小为 32 位。 (2认同)

Dav*_*her 6

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