Dans mon tableau d’octets, j’ai les valeurs de hachage d’un message qui comprennent des valeurs négatives et des valeurs positives. Les valeurs positives sont imprimées facilement en utilisant l’instruction (char)byte[i]
. Maintenant, comment puis-je obtenir la valeur négative
Eh bien, si vous êtes content de l’imprimer en décimal, vous pouvez simplement le rendre positif en masquant:
int positive = bytes[i] & 0xff;
Si vous imprimez un hash, il serait plus conventionnel d’utiliser des hexagones. Il y a beaucoup d’autres questions sur le débordement de stack en adressant la conversion des données binarys à une chaîne hexadécimale en Java.
Que diriez-vous de Arrays.toSsortingng(byteArray)
?
Voici un code compilable:
byte[] byteArray = new byte[] { -1, -128, 1, 127 }; System.out.println(Arrays.toSsortingng(byteArray));
Sortie:
[-1, -128, 1, 127]
Pourquoi réinventer la roue …
Si vous souhaitez imprimer les octets sous forme de caractères, vous pouvez utiliser le constructeur Ssortingng.
byte[] bytes = new byte[] { -1, -128, 1, 127 }; System.out.println(new Ssortingng(bytes, 0));
Essayez ceci: new Ssortingng(byte[])
byte[] buff = {1, -2, 5, 66}; for(byte c : buff) { System.out.format("%d ", c); } System.out.println();
vous amène
1 -2 5 66
Essayez-le:
public static Ssortingng print(byte[] bytes) { SsortingngBuilder sb = new SsortingngBuilder(); sb.append("[ "); for (byte b : bytes) { sb.append(Ssortingng.format("0x%02X ", b)); } sb.append("]"); return sb.toSsortingng(); }
Exemple:
public static void main(Ssortingng []args){ byte[] bytes = new byte[] { (byte) 0x01, (byte) 0xFF, (byte) 0x2E, (byte) 0x6E, (byte) 0x30 }; System.out.println("bytes = " + print(bytes)); }
Sortie: bytes = [ 0x01 0xFF 0x2E 0x6E 0x30 ]