Ich erstelle einen Chip-8-Emulator, der das Lesen virtueller ROM-Dateien in Bytes erfordert. Ich habe diesen Code, der eine readByte-Methode aufruft. Wenn Sie sich die Werte anschauen, die dieser Ausdruck ausgibt, sind einige von ihnen normale Bytes, und einige von ihnen sind verrückt groß. DataInputStream readByte gibt einen großen Wert zurück
Antwort
DataInputStream.readByte()
gibt eine byte
die ein signierten Typ ist. Der zurückgegebene Wert kann minus sein.
Integer.toHexString(intValue)
gibt eine hex-Darstellung des interpretierten Wertes als unsigned integer.
So werden positive Werte (wie 76, 12) wie erwartet gedruckt, während negative Werte in two's complement representation gedruckt werden (die Art, wie negative Werte in Java dargestellt werden). Der gedruckte Wert von fffffffe
ist beispielsweise eine 32-Bit- (Ganzzahlgröße) Zweierkomplementdarstellung von -2
.
Um richtig Bytewerte zu drucken, verwenden Sie diese:
System.out.println(String.format("%02x", tmp));
Beachten Sie, dass dies auch mit Nullen pad-links gedruckt Werte richtig.
Ich denke, das Drucken von Bytes durch ihre Hex-Werte ist nützlicher für das Dateiformat (Header Bytes usw.) ... Allerdings sollte Asker wirklich klären, ob sie die Hex-Werte oder wollen Dezimalwerte. –
Vielen Dank! :) –
- 1. DataInputStream hängt beim Lesen
- 2. mysql_fetch_assoc() gibt einen unerwarteten Wert zurück
- 3. Gibt einen Wert als Ausgangsparameter zurück
- 4. Rx.Observable.subscribe gibt einen Wert an Observable zurück
- 5. Laravel - Eloquent gibt nur einen Wert zurück
- 6. g_hash_table_contains gibt einen unerwarteten Wert zurück
- 7. PHP preg_replace gibt einen anderen Wert zurück
- 8. Laravel: Warum gibt count() einen Wert zurück
- 9. NSDecimalNumber gibt einen falschen Wert zurück uint64_t
- 10. Warum gibt CGColor.copy() einen optionalen Wert zurück?
- 11. pthreads_create() gibt einen Wert ungleich null zurück?
- 12. Warum gibt len () einen vorzeichenbehafteten Wert zurück?
- 13. Warum gibt printf einen Wert zurück?
- 14. LINQ gibt einen Wert IEnumerable zurück
- 15. DateTimeDFF() gibt einen negativen Wert zurück
- 16. SPContext.Current.Web.CurrentUser gibt einen irreführenden Wert zurück
- 17. __NSCFNumber gibt einen negativen Wert zurück
- 18. jQuery innerHeight() gibt einen falschen Wert zurück
- 19. JSON-Objektlänge gibt einen großen Wert statt der erwarteten 750 Datensätze zurück
- 20. Formular gibt keinen Wert zurück?
- 21. DataReader gibt keinen Wert zurück?
- 22. TMDB gibt nichts zurück und gibt manchmal den Wert zurück
- 23. Attr ('Wert') gibt zurück undefined
- 24. mysqli_stmt_bind_result gibt keinen Wert zurück
- 25. Java gibt keinen Wert zurück
- 26. BeautifulSoup gibt keinen Wert zurück
- 27. DATESYTD gibt keinen Wert zurück
- 28. AJAX gibt leeren Wert zurück
- 29. CL_DEVICE_GLOBAL_MEM_SIZE gibt falschen Wert zurück
- 30. Cursor gibt keinen Wert zurück
Haben Sie keine Angst, mir zu sagen, wenn ich keine Informationen auslasse! –
Um die Lesbarkeit zu erhöhen, sollten Sie Ihren Code lieber als Screenshot schreiben – limonik