Ich habe eine ganze Zahl: 1695609641
wenn ich Methode benutze:
String hex = Integer.toHexString(1695609641);
system.out.println(hex);
gibt:
6510f329
aber ich möchte ein Byte-Array:
byte[] bytearray = new byte[] { (byte) 0x65, (byte)0x10, (byte)0xf3, (byte)0x29};
Wie kann ich das machen?
Antworten:
Die Verwendung von ByteBuffer von Java NIO ist sehr einfach:
Ausgabe:
quelle
"0x%02X"
wenn Sie immer zwei hexadezimale Zeichen sowie hexadezimale Großbuchstaben, z . B.System.out.format("0x%02X", (byte) 10)
Anzeigen, möchten0x0A
.Wie wäre es mit:
Die Idee ist nicht meine . Ich habe es einem Beitrag auf dzone.com entnommen .
quelle
>>>
anstelle des rechten Schichtoperators verwendet haben>>
( docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html ), sodass das Verhalten möglicherweise nicht wie gewünscht ist. wie erwartet mit signierten und nicht signierten NummernBigInteger.valueOf(1695609641).toByteArray()
quelle
BigInteger.toByteArray()
Staaten: "Das Array wird die minimale Anzahl von Bytes enthalten, die erforderlich sind, um diese BigIntegerquelle
Verwenden von Guave :
quelle
quelle
quelle
Die folgenden Blöcke funktionieren zumindest zum Senden eines Int über UDP.
int to byte array:
Byte-Array zu int:
quelle
Da Sie dieses Array im Allgemeinen zu einem späteren Zeitpunkt wieder in ein int konvertieren möchten, finden Sie hier die Methoden zum Konvertieren eines Ints-Arrays in ein Byte-Array und umgekehrt:
Beachten Sie, dass aufgrund der Vorzeichenausbreitung und dergleichen "& 0xFF ..." beim Zurückkonvertieren in das int benötigt wird.
quelle
für das erste Byte
für die zweite und Schleife usw. in ein vorab zugewiesenes Byte-Array schreiben. Leider etwas chaotisch.
quelle
Die Klasse org.apache.hadoop.hbase.util.Bytes verfügt über eine Reihe praktischer Konvertierungsmethoden für Byte []. Möglicherweise möchten Sie jedoch nicht nur zu diesem Zweck das gesamte HBase-JAR zu Ihrem Projekt hinzufügen. Es ist überraschend, dass solche Methoden nicht nur AFAIK im JDK fehlen, sondern auch in offensichtlichen Bibliotheken wie Commons Io.
quelle
Mein Versuch:
Damit können Sie Folgendes tun:
Die vollständige Klasse finden Sie hier: https://gist.github.com/superbob/6548493 . Sie unterstützt die Initialisierung von Shorts oder Long
quelle
Wenn Sie Apache-Commons verwenden
quelle