Wie konvertiert byte-array in hex-format in Java
Ich weiß, dass Sie verwenden können printf
und auch StringBuilder.append(String.format("%x", byte))
zum konvertieren von Werten, HEX-Werten und zeigt Sie auf der Konsole. Aber ich möchte in der Lage sein, um tatsächlich format der byte-array, so dass jedes byte angezeigt, da HEX statt dezimal.
Hier ein Ausschnitt aus meinem code habe ich bereits, die ersten beiden Möglichkeiten, die ich angegeben:
if(bytes > 0)
{
byteArray = new byte[bytes]; //Set up array to receive these values.
for(int i=0; i<bytes; i++)
{
byteString = hexSubString(hexString, offSet, CHARSPERBYTE, false); //Isolate digits for a single byte.
Log.d("HEXSTRING", byteString);
if(byteString.length() > 0)
{
byteArray[i] = (byte)Integer.parseInt(byteString, 16); //Parse value into binary data array.
}
else
{
System.out.println("String is empty!");
}
offSet += CHARSPERBYTE; //Set up for next word hex.
}
StringBuilder sb = new StringBuilder();
for(byte b : byteArray)
{
sb.append(String.format("%x", b));
}
byte subSystem = byteArray[0];
byte highLevel = byteArray[1];
byte lowLevel = byteArray[2];
System.out.println("Byte array size: " + byteArray.length);
System.out.printf("Byte 1: " + "%x", subSystem);
System.out.printf("Byte 2: " + "%x", highLevel);
System.out.println("Byte 3: " + lowLevel);
System.out.println("Byte array value: " + Arrays.toString(byteArray));
System.out.println("Byte array values as HEX: " + sb.toString());
}
else
{
byteArray = new byte[0]; //No hex data.
//throw new HexException();
}
return byteArray;
Den string, der aufgeteilt wurde, bis in das byte-array wurde:
"1E2021345A2B"
Aber zeigt es als Dezimalzahl auf der Konsole wie:
"303233529043"
Könnte jemand bitte helfen Sie mir, wie man die tatsächlichen Werte werden in hex angezeigt werden, das in dieser Weise natürlich. Vielen Dank im Voraus.
InformationsquelleAutor James Meade | 2013-10-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die
String javax.xml.binden.DatatypeConverter.printHexBinary(byte[])
. z.B.:Der kürzeste Weg, der andere Wege, die ich gefunden habe.
VGR Antwort funktioniert auch auf Android und es ist viel einfacher.
Für Android finden Sie unter VGR-Lösung.
Top Antwort für business-Anwendungen, wo javax.xml.binden.DatatypeConverter in der Regel verfügbar ist
InformationsquelleAutor Paul Vargas
String.format
eigentlich macht Gebrauch von java.util.Formatter-Klasse. Anstelle der Verwendung der String.format Komfort-Methode, verwenden Sie einen Formatierer direkt:Sauberste Lösung bei weitem. Danke!!! Erwähnenswert ist, dass Sie setzen können
x
im groß-und fügen Sie ein Leerzeichen nach es in dem oberen Fall, um es so Aussehen mehr lesbarInformationsquelleAutor VGR
Die Art, wie ich es mache:
Es erfordert zwei HEX-Zeichen zu 'beschreiben,' 1 byte. Sie können 1 hex-Zeichen mit 1 byte, wenn Sie Kodieren die hex char mit der hex chrar ist der ASCII-code. Daher müssen Sie zwei bytes zu beschreiben, die ein byte in hex, ASCII. Ich bin mir nicht sicher, was Sie wirklich wollen.
Ich will zwei Charaktere besetzen 1 byte. Also für mein Beispiel habe ich eine byte-array-6.
Sie sollten lernen, über bytes, Zahlensystem, Zeichen und Ihre Codierung in bits, genannt 'character encoding'. Standardmäßig wird ein ascii-Zeichen codiert 1 byte (8 bits). Hexadezimal ist ein Zahlensystem, wo kann jede Zahl Spannweite von 0-F. Diese Zahl kann dargestellt werden durch ein ascii-Zeichen. Sie müssen zwei hex-zahlen zu beschreiben, ein byte (8 bits). Wenn Sie anzeigen möchten diese beiden zahlen mit ascii-Zeichen, dann müssen Sie zwei Zeichen und somit zwei bytes.
Und das ist genau über der Konvertierung zwischen Zahlensysteme: youtube.com/watch?v=Fpm-E5v6ddc
InformationsquelleAutor Tamas
Versuchen, diese
InformationsquelleAutor Dharmesh Gohil