Ich muss konvertieren 2 Byte Array (Byte [2]) zu Integer-Wert in Java. Wie kann ich das machen?Java: Konvertieren von Byte zu Ganzzahl
Antwort
können Sie ByteBuffer
für diesen Einsatz:
ByteBuffer buffer = ByteBuffer.wrap(myArray);
buffer.order(ByteOrder.LITTLE_ENDIAN); // if you want little-endian
int result = buffer.getShort();
Siehe auch Convert 4 bytes to int.
+1 für ByteBuffer Lösung – Casey
Vielen Dank, dies funktioniert. Will ByteBuffer kümmert sich um signierte und vorzeichenlose Bytes? – keshav
@keshav: was meinst du? Es gibt kein "signiertes" oder "vorzeichenloses" Byte. Ein Byte ist nur eine Gruppe von "0" und "1"; Die ** einzige ** Bedeutung besteht darin, wie Sie diese Zahlen interpretieren. –
Nun, jedes Byte ist eine Ganzzahl im Bereich -128..127, also müssen Sie ein Paar von Integer auf eine einzelne ganze Zahl abbilden. Es gibt viele Möglichkeiten, dies zu tun, abhängig davon, was Sie in dem Byte-Paar codiert haben. Am gebräuchlichsten ist das Speichern einer 16-Bit-Ganzzahl mit Vorzeichen als ein Paar von Bytes. Konvertieren, dass auf eine ganze Zahl zurück hängt davon ab, ob Sie es speichern Big-Endian-Form:
(byte_array[0]<<8) + (byte_array[1] & 0xff)
oder Little-Endian:
(byte_array[1]<<8) + (byte_array[0] & 0xff)
In Java Bytes unterzeichnet werden, was bedeutet, dass der Wert eines Byte negativ sein kann Und wenn das passiert, wird die ursprüngliche Lösung von @ MattBall nicht funktionieren.
Wenn beispielsweise die binäre Form des Bytes Array wie folgt ist:
dann myArray [0] ist 1000 1101
und myArray [1] ist 1000 1101
, die Dezimalwert Byte ist 1000 1101
-115
anstelle von 141 (= 2^7 + 2^3 + 2^2 + 2^0)
wenn wir verwenden
int result = (myArray[0] << 8) + myArray[1]
der Wert würde -16191
sein, was WRONG ist.
Der Grund, warum seine falsch ist, dass, wenn wir einen 2-Byte-Array in integer, alle Bytes sind nicht unterzeichnet, so beim Übersetzen interpretieren, sollten wir die signierten Bytes unsigned integer Karte:
((myArray[0] & 0xff) << 8) + (myArray[1] & 0xff)
das Ergebnis ist 36237
, verwenden Sie einen Taschenrechner oder ByteBuffer, um zu überprüfen, ob es korrekt ist (Ich habe es getan, und ja, es ist richtig).
vielen Dank für die Erklärung :) – shadygoneinsane
Auch, wenn Sie die Guava Bibliothek verwenden können:
Ints.fromByteArray(0, 0, myArray[1], myArray[0]);
Es war erwähnenswert, da viele Projekte es trotzdem verwenden.
einfach dies zu tun:
return new BigInteger(byte[] yourByteArray).intValue();
große Arbeiten über Bluetooth Befehl Conversions etc. Keine Notwendigkeit, über vs. unsigned Umwandlung unterzeichnet zu kümmern.
- 1. Konvertieren einer Ganzzahl in eine Byte-Array
- 2. Python konvertieren Ganzzahl in 16-Byte-Bytes
- 3. Konvertieren von 1D Byte-Array in 1D Ganzzahl-Array
- 4. ordentlich konvertieren Byte [] zu lang [] in Java
- 5. Konvertieren von Byte-Array base64 String java
- 6. von Byte Konvertieren von [] zu String
- 7. Konvertieren von Monatsnamen in Ganzzahl
- 8. Wie Konvertieren von Byte zu base64 String
- 9. Byte-Code zu Java-Quellcode
- 10. Wie BigInteger konvertieren ein Byte-Array zu Nummer in Java?
- 11. Java | Binär String zu Byte
- 12. Java convert Float zu Ganzzahl
- 13. Schnelle Möglichkeit, Byte [] in Kurz [] auf Java-Karte zu konvertieren
- 14. Konvertieren native Uint8_t (Java-Byte) in eine int
- 15. Konvertieren Zeichenfolge in Ganzzahl
- 16. Konvertieren von Document-Objekt byte []
- 17. Konvertieren von Zertifikatsbyte [] zu X509Certificate in Java
- 18. Konvertieren von sbyte in Byte
- 19. Byte Reihenfolge: Konvertieren von Java Bytes in C#
- 20. Konvertieren von Raw-Byte-Werten in Java-Typen
- 21. SQL Server Konvertieren von Ganzzahl in Binärzeichenfolge
- 22. Java String zu Byte [] (String enthält Objektdaten)
- 23. Javascript - Ganzzahl in Array von Bits konvertieren
- 24. Konvertieren von String in Ganzzahl in Schema
- 25. Konvertieren von JSON-Array-Wert in Ganzzahl
- 26. Konvertieren von Ganzzahl in Binär in C#
- 27. Konvertieren von Spaltennamen in Ganzzahl mit read_csv
- 28. Java: StringBuffer zu Byte [] ohne toString
- 29. Code Java konvertieren zu PHP
- 30. Java: byte [] bis Byte []
Diese Frage könnte einige Klarstellungen verwenden. So wie es jetzt aussieht, werden wir nur sehen, was Sie mit welcher Antwort meinen. –