2013-06-12 13 views

答えて

9

intを返した場合、CRCの半分が負の値になるためです。期待されるのは、32ビットCRCが符号なしである、すなわち、0..4294967295であり、これはintで表現できないことである。

+0

マーク、答えに感謝します。私はフォローアップを持っています:私は最後のバイトが前のすべてのバイトのCRCであるファイルを読み書きしています。 CRCは4バイトに収まる必要があります。だから私は長いCRCの上位4バイトを無視できないのですか?私はlongを "unsigned" represention firstに変換する必要がありますか? – Steveo

+1

定義上、32ビットCRCはロングの4バイトに収まります。 Javaには符号なし32ビット型はありません。 –

2

java.util.zip.CRC32したがって、32ビットのチェックサム用longを要する、getValue()long戻り型が必要Checksumインタフェースを実装します。出力の上位32ビットはほぼ確実に0になります。

関連する問題