Siehe den Titel. Der zurückgegebene Wert ist 32 Bit, oder? Warum nicht ein int zurückgeben?Warum gibt java.util.zip.CRC32.getValue() einen langen, keinen int zurück?
8
A
Antwort
9
Weil, wenn es ein int zurückgab, die Hälfte der CRCs negativ wäre. Die Erwartung ist, dass ein 32-Bit-CRC unsigniert ist, d. H. 0..4294967295, der nicht in einem int dargestellt werden kann.
2
java.util.zip.CRC32
implementiert die Checksum
-Schnittstelle, die einen long
Rückgabetyp für getValue()
erfordert daher ein long
für ein 32-Bit-Prüfsumme erfordern; die oberen 32 Bits des Ausgangs sind fast definitiv 0.
Verwandte Themen
- 1. Google Spreadsheet getValue ([Zelle mit \ t]) gibt keinen Tabulator zurück
- 2. Warum gibt Dappers .Execute (...) ein int zurück?
- 3. Warum gibt (int) (33.46639 * 1000000) 33466389 zurück?
- 4. SQL AVG gibt einen int zurück
- 5. Cursor gibt keinen Wert zurück
- 6. Funktion gibt keinen Wert zurück
- 7. file_get_contents ("php: // input") gibt einen langen String zurück
- 8. DataReader gibt keinen Wert zurück?
- 9. WCF gibt kein int zurück
- 10. Warum gibt diese Funktion einen Zeiger zurück?
- 11. CakePHP speichert keinen langen Text
- 12. Warum gibt ant.bat bei der programmgesteuerten Ausführung keinen Fehlerstatus zurück?
- 13. Funktion gibt keinen Wert zurück Actionscript Ratespiel
- 14. Warum gibt meine for-Schleife nur einmal einen Wert zurück?
- 15. DATESYTD gibt keinen Wert zurück
- 16. $ _POST gibt keinen Wert zurück
- 17. Warum gibt dieser Code keine NullPointerException zurück?
- 18. Warum gibt style.left keinen Wert in Javascript zurück?
- 19. Warum gibt die RegEx-Ausgabe keinen HTML-Text zurück?
- 20. Warum gibt die OnXXX Event Raiser-Methode keinen Wert zurück?
- 21. Hibernate Session.save() gibt keinen Wert zurück?
- 22. Ajax-Aufruf gibt keinen Erfolg zurück
- 23. SingleOrDefault gibt keinen aktuellen Datenbankinhalt zurück
- 24. Warum gibt die WriteTo-Methode von io.WriterTo einen Int64-Wert und nicht einen Int-Wert zurück?
- 25. Warum gibt int = int * double einen Fehler und int * = double nicht (in Java)?
- 26. Verschachtelte Rückkehrfunktion gibt keinen Wert zurück
- 27. Warum gibt Antwortcode einen anderen Code zurück?
- 28. Warum gibt printf einen Wert zurück?
- 29. QFileSystem entryInfo gibt keinen vollständigen Verzeichnisnamen zurück
- 30. Android - Warum gibt onItemLongClick (...) einen booleschen Wert zurück?
Mark, danke für die Antwort. Ich habe ein Follow-up: Ich lese und schreibe Dateien, deren letzte Bytes eine CRC aller vorhergehenden Bytes sind. Die CRC muss in 4 Bytes passen. Ich kann also nicht einfach die oberen 4 Bytes der langen CRC ignorieren, oder? Ich müsste die lange in eine "unsigned" Darstellung zuerst rechts konvertieren? – Steveo
Per Definition passt ein 32-Bit-CRC in die unteren vier Byte des langen. In Java gibt es keinen vorzeichenlosen 32-Bit-Typ. –