gpt4 book ai didi

java - CRC32 java 在 java 64 位上有所不同

转载 作者:行者123 更新时间:2023-12-01 23:54:35 28 4
gpt4 key购买 nike

最近我将一个32位java的tomcat5上的应用程序迁移到64位java的tomcat6上。

在应用程序中有一个文本CRC计算,它在每个服务器中返回不同的值。例如:“额叶增生。恢复面部面部护理和习惯性神经化。没有观察到的病变。Atentamente,”返回:32 位 jvm 上的 439231721并返回:64 位 jvm 上的 2756208468

也在 32 位 jvm tomcat6 上尝试过并返回 439231721

以下是crc计算的代码:

public static long doChecksum(String text) {

try{

//Convert string to bytes
byte bytes[] = text.getBytes();
Checksum checksum = new CRC32();
// void update(bytes[] b, int start, int length)
checksum.update(bytes,0,bytes.length);

long lngChecksum = checksum.getValue();
System.out.println(text + " : " + lngChecksum);
return lngChecksum;
} catch (Exception e) {
return -1;
}
}

谢谢!

最佳答案

请注意,String.getBytes() 使用系统的默认字符编码将字符转换为字节。如果系统有不同的默认字符编码,您会得到不同的字节数组,从而导致不同的校验和。

指定要使用的字符编码以获得一致的结果:

byte[] bytes = text.getBytes("UTF-8");

关于java - CRC32 java 在 java 64 位上有所不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15794886/

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