CRC32 java在java 64位上有所不同

CRC32 java在java 64位上有所不同,java,checksum,crc32,Java,Checksum,Crc32,最近,我将32位java的tomcat5上的应用程序迁移到64位java的tomcat6上 在应用程序中有一个文本CRC计算,它返回不同的值​​在每个服务器中。 例如: “前额髋臼成形术。习惯性的面部恢复术。没有观察到lesionesóseas.Atentante,” 在32位jvm上返回:439231721 在64位jvm上返回:2756208468 还在32位jvm tomcat6上尝试了它,返回439231721 以下是crc计算的代码: public static long doChec

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

在应用程序中有一个文本CRC计算,它返回不同的值​​在每个服务器中。 例如: “前额髋臼成形术。习惯性的面部恢复术。没有观察到lesionesóseas.Atentante,” 在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");

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

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

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

您确定这不是区域设置问题吗?您是否检查了
字节的内容在两种平台上是否相同或不同?请注意,
字符串上的
getBytes()
使用系统的默认字符编码翻译字符。很可能系统具有不同的默认字符编码。您确定这不是区域设置问题吗?您是否检查了两个平台上的
字节的内容是否相同或不同?请注意,
字符串上的
getBytes()
使用系统的默认字符编码翻译字符。系统可能有不同的默认字符编码。