comment imprimer les données en tableau d’octets en tant que caractères

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 ]