gpt4 book ai didi

java - android 中错误的 CRC32 散列

转载 作者:太空狗 更新时间:2023-10-29 13:26:19 26 4
gpt4 key购买 nike

我正在使用以下代码计算 CRC32 哈希。

CRC32 crc = new CRC32();
crc.update(str.getBytes());
String enc = Long.toHexString(crc.getValue());

我的问题是,在输出 (enc) 中,如果第一个字符是“0”,它会删除那个零,最后我将得到一个 7 个字符长的十六进制字符串。谁能告诉我,如果“0”作为第一个字符,我如何才能获得完整的 8 个字符长的十六进制字符串?

最佳答案

根据 toHexString 的 Java 文档这是预期的行为:

This value is converted to a string of ASCII digits in hexadecimal (base 16) with no extra leading 0s.

有很多方法可以解决这个问题,例如在字符串的开头添加一个前导零字符,直到达到所需的长度,尽管另一种方法是使用 String.format 允许使用 C 风格格式规范的方法:

String enc = String.format("%08X", crc.getValue());

这是常规 Java 的完整工作示例,其中包括带前导零的计算:

import java.util.zip.CRC32;
import java.util.zip.Checksum;

public class HelloWorld{
public static void main(String []args){
String str = "c";
CRC32 crc = new CRC32();
crc.update(str.getBytes());
String enc = String.format("%08X", crc.getValue());
System.out.println(enc);
}
}

关于java - android 中错误的 CRC32 散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20993557/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com