这看起来正确吗?我正在尝试将此校验和方法从 C 移植到 Java,但从我的 Java 函数返回的值太高。我怀疑我捏造 unsigned int 的方式不正确?
char *Generate( char * buffer, long length ) {
static char tBuf[4];
long index;
unsigned int checksum;
for( index = 0L, checksum = 0; index < length; checksum += (unsigned int) buffer[index++] );
sprintf( tBuf, "%03d", (unsigned int) ( checksum % 256 ) );
return( tBuf );
}
我的 Java 端口:
public String generateCheckSum( String value ) {
char[] chars = value.toCharArray();
long checksum = 0L;
for( int i = 0; i < chars.length; i++ ) {
checksum += (checksum + (long) chars[ i ]) & 0xFF;
}
return String.valueOf( checksum % 256 );
}
非常感谢任何见解,谢谢