2013-06-12 30 views

Trả lời

9

Bởi vì nếu nó trả về một int, một nửa số CRC sẽ là số âm. Kỳ vọng là CRC 32 bit không được ký, tức là 0..4294967295, không thể được biểu diễn trong một int.

+0

Đánh dấu, cảm ơn câu trả lời. Tôi có theo dõi: Tôi đang đọc và ghi các tệp có byte cuối cùng là CRC của tất cả các byte trước đó. CRC phải phù hợp với 4 byte. Vì vậy, tôi không thể bỏ qua 4 byte trên của CRC dài, phải không? Tôi sẽ cần phải chuyển đổi dài để một "unsigned" represention đầu tiên phải không? – Steveo

+1

Theo định nghĩa, CRC 32 bit phù hợp với bốn byte dài của độ dài. Không có kiểu 32-bit chưa ký trong Java. –

2

java.util.zip.CRC32 cài đặt giao diện Checksum, đòi hỏi một loại long để đổi lấy getValue(), do đó đòi hỏi một long cho một checksum 32-bit; 32 bit trên của đầu ra gần như chắc chắn 0.

Các vấn đề liên quan