Недавно я переношу заявку на tomcat5 с 32-битной java на tomcat6 с 64-битной java.CRC32 java отличается на java 64 бит
В приложении есть текстовый калькулятор CRC, который возвращает разные значения на каждом из серверов. Например: "гипоплазия дель Сено frontal.Resto де senos faciales против Desarrollo у neumatización habituales.No себе observan lesiones óseas.Atentamente," возвращается: 439231721 на 32 битных Jvm и возвращает: 2756208468 на 64 битной виртуальной машине Java
также попробовал его на 32 битном Jvm tomcat6 и возвращает 439231721
Вот код КРК расчета:
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;
}
}
Спасибо!
Вы уверены, что это не проблема локаль? – us2012
Вы проверили, являются ли содержимое «байтов» одинаковыми или разными на обеих платформах? Обратите внимание, что 'getBytes()' на 'String' переводит символы, используя кодировку по умолчанию для системы. Скорее всего, системы имеют разные кодировки символов по умолчанию. – Jesper