2013-06-12 12 views

Odpowiedz

9

Ponieważ jeśli zwróci int, połowa CRC będzie ujemna. Oczekuje się, że 32-bitowy CRC jest niepodpisany, tj. 0..4294967295, który nie może być reprezentowany w int.

+0

Mark, dzięki za odpowiedź. Mam śledzenie: czytam i piszę pliki, których ostatnie bajty są CRC wszystkich poprzednich bajtów. CRC musi zmieścić się w 4 bajtach. Więc nie mogę po prostu zignorować górnych 4 bajtów długiego CRC, czy mogę? Potrzebowałabym przekształcić długą na "niepodpisaną" reprezentację w pierwszej kolejności? – Steveo

+1

Z definicji 32-bitowy CRC pasuje do niskich czterech bajtów długości. W Javie nie ma typu 32-bitowego bez znaku. –

2

java.util.zip.CRC32 realizuje interfejs Checksum, który wymaga takiego typu long powrotny dla getValue() zatem wymaga long dla kontrolnej 32-bitowych; górne 32 bity wyjścia są prawie na pewno 0.

Powiązane problemy