Java String, char einzeln auf hex-bytes
Will ich konvertieren einer Zeichenfolge durch einen einzigen char auf 5 hex-bytes und ein byte repräsentieren eine hex-Zahl:
wie
String s = "ABOL1";
zu
byte[] bytes = {41, 42, 4F, 4C, 01}
Versuchte ich folgenden code , aber Byte.decode
habe Fehler bei der string ist zu groß, wie das "4F" oder "4C". Gibt es eine andere Möglichkeit es zu konvertieren?
String s = "ABOL1";
char[] array = s.toCharArray();
for (int i = 0; i < array.length; i++) {
String hex = String.format("%02X", (int) array[i]);
bytes[i] = Byte.decode(hex);
}
- Ein
char
ist nicht einbyte
! - Es gibt keine solche Sache wie eine 'hex-byte". Die Daten bereits in dem von Ihnen gewünschten format. Kopieren Sie einfach die bytes.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
String hex = String.format("0x%02X", (int) array[i]);
angeben HexDigits mit0x
vor dem string.Eine bessere Lösung ist, konvertieren
int
inbyte
direkt:Gibt es irgendeinen Grund, warum Sie versuchen, gehen durch den string? Da könnte man genau dies tun:
Oder sogar ersetzen Sie alle den code:
Können Sie konvertieren von
char
zu hexString
mit String.format():Oder Bedrohung der
char
alsint
und Verwendung:Den Byte.decode() javadoc gibt an, dass die hex-zahlen sollte auf die form
"0x4C"
. Also, um loszuwerden, die Ausnahme, versuchen Sie dies:Kann es auch ein einfacher Weg, um die Konvertierung zu machen, weil die Klasse String hat eine Methode konvertiert eine Zeichenfolge in bytes :
Oder, wenn Sie möchten, eine raw-Konvertierung in ein byte-array: