Zobacz tytuł. Zwrócona wartość wynosi 32 bity, prawda? Dlaczego nie zwrócić int?Dlaczego java.util.zip.CRC32.getValue() zwraca długi, a nie int?
8
A
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.
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
- 1. Dlaczego metoda InputStream # read() zwraca wartość int, a nie bajt?
- 2. dlaczego math.Ceiling (double a) nie zwraca int bezpośrednio?
- 3. Dlaczego Array.Length int, a nie uint
- 4. Dlaczego 0XAA jest niepodpisaną int, a nie int?
- 5. int a = (int) ((0,7 + 0,1) * 10). Dlaczego a = 7?
- 6. Dlaczego przesyłanie/konwersja z int zwraca gwiazdkę
- 7. Java: Długi wynik = -1: nie można przekonwertować z int na długi
- 8. Dlaczego Math.Round/Floor/Ceiling nie zwraca długiej lub int?
- 9. javax.servlet.HttpServletRequest.getContentLength() zwraca tylko int.
- 10. Dlaczego int * [] zanika w int **, ale nie int [] []?
- 11. Dlaczego int = int * double daje błąd, a int * = double nie (w Javie)?
- 12. Dlaczego Stream.Position jest długi?
- 13. Dlaczego Java 8 wprowadzać * Integer.sum (int a, int b) *
- 14. Dlaczego Decimal.Divide (int, int) działa, ale nie (int/int)?
- 15. Dlaczego wskaźnik do wskaźnika (int ** a)?
- 16. Długi int na 32-bitowych komputerach
- 17. Czy mogę zamienić długi na int?
- 18. Scala: dlaczego nie działa lista [=> Int]?
- 19. Dlaczego tablica typów z obiektami zwraca "Obiekt", a nie "Tablica"?
- 20. Dlaczego funkcja dict.keys() w Pythonie zwraca listę, a nie zbiór?
- 21. Dlaczego Scala ani Either.RightProjection # nie zwraca zwrotu?
- 22. Dlaczego Int nie dziedziczy/nie rozszerza się z zamówionego [Int]
- 23. dlaczego null.asInstanceOf [Int] nie rzuca wyjątku NullPointerException?
- 24. Dlaczego ten bitowy LUB zwraca wartość null na int nullable?
- 25. Czy istnieje jakaś różnica między Długi a = Długi.wartościOf (1) lub Długi a = 1L?
- 26. Dlaczego SignalProducer nie zwraca sygnału?
- 27. cellForRowAtIndexPath nie wywołane; sekcje zwraca 1, a wiersze zwraca 4
- 28. ECMA-262 7.0 GetValue (V)
- 29. Konwersja int int *, a następnie z powrotem do int
- 30. Dlaczego właściwości PropertyInfo SetValue i GetValue są takie wolne?
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
Z definicji 32-bitowy CRC pasuje do niskich czterech bajtów długości. W Javie nie ma typu 32-bitowego bez znaku. –