繁体   English   中英

Java中的无符号字节CRC32

[英]Unsigned Bytes CRC32 in Java

我正在尝试复制Java中PHP中可用的CRC32哈希函数。 Java中现有的CRC32类返回不同的哈希值,我相信这是因为我的字节数组中的Java字节是无符号-128到128而不是0-255。

我无法弄清楚的是如何解决这种情况。 我已经看过使用Guava的UnsignedBytes,但找不到以它为参数的哈希方法。 我可以用它来编写自己的哈希函数,但是坦率地说,我对它的工作原理或按位算术的理解还不够充分。

用最简单的术语来说,我试图CRC32有一个字符串并返回十进制表示形式。

CRC并不关心符号。

Java的CRC32给我的结果与PHP相同。

public static void main(String[] args) {
    String a = "Hello World!";
    CRC32 crc = new CRC32();
    crc.update(a.getBytes());
    System.out.println(Long.toHexString(crc.getValue()));
}

输出: 1c291ca3

使用此在线PHP CRC32计算器,可以得出与上述Java代码相同的CRC值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM