In meinem Byte-Array habe ich die Hash- Werte einer Nachricht, die aus einigen negativen und auch positiven Werten besteht. Positive Werte können mithilfe der (char)byte[i]
Anweisung problemlos gedruckt werden .
Wie kann ich nun den negativen Wert erhalten?
Antworten:
Wenn Sie es gerne dezimal drucken, können Sie es einfach durch Maskieren positiv machen:
int positive = bytes[i] & 0xff;
Wenn Sie jedoch einen Hash ausdrucken, ist es herkömmlicher, Hex zu verwenden. Es gibt viele andere Fragen zum Stapelüberlauf, die sich mit der Konvertierung von Binärdaten in eine Hex-Zeichenfolge in Java befassen.
quelle
Wie wäre es
Arrays.toString(byteArray)
?Hier ist ein kompilierbarer Code:
byte[] byteArray = new byte[] { -1, -128, 1, 127 }; System.out.println(Arrays.toString(byteArray));
Ausgabe:
[-1, -128, 1, 127]
Warum das Rad neu erfinden ...
quelle
byteArray.contentToString()
Wenn Sie die Bytes als Zeichen drucken möchten, können Sie den String-Konstruktor verwenden.
byte[] bytes = new byte[] { -1, -128, 1, 127 }; System.out.println(new String(bytes, 0));
quelle
Versuch es:
public static String print(byte[] bytes) { StringBuilder sb = new StringBuilder(); sb.append("[ "); for (byte b : bytes) { sb.append(String.format("0x%02X ", b)); } sb.append("]"); return sb.toString(); }
Beispiel:
public static void main(String []args){ byte[] bytes = new byte[] { (byte) 0x01, (byte) 0xFF, (byte) 0x2E, (byte) 0x6E, (byte) 0x30 }; System.out.println("bytes = " + print(bytes)); }
Ausgabe:
bytes = [ 0x01 0xFF 0x2E 0x6E 0x30 ]
quelle
Probier diese :
new String(byte[])
quelle
byte[] buff = {1, -2, 5, 66}; for(byte c : buff) { System.out.format("%d ", c); } System.out.println();
holt dich
1 -2 5 66
quelle