これは正しいと思いますか?このチェックサム メソッドを 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 );
}
どんな洞察も大歓迎です、ありがとう