86 votes

Comment imprimer les données d'un tableau d'octets sous forme de caractères ?

Dans mon tableau d'octets, j'ai le dièse les valeurs d'un message qui comprend des valeurs négatives et des valeurs positives. Les valeurs positives sont imprimées facilement en utilisant la fonction (char)byte[i] déclaration.

Maintenant, comment puis-je obtenir la valeur négative ?

287voto

Bohemian Points 134107

Et si Arrays.toString(byteArray) ?

Voici du code compilable :

byte[] byteArray = new byte[] { -1, -128, 1, 127 };
System.out.println(Arrays.toString(byteArray));

Sortie :

[-1, -128, 1, 127]

Pourquoi réinventer la roue...

25voto

Peter Lawrey Points 229686

Si vous voulez imprimer les octets sous forme de caractères, vous pouvez utiliser le constructeur String.

byte[] bytes = new byte[] { -1, -128, 1, 127 };
System.out.println(new String(bytes, 0));

24voto

Robust Points 1255

Essayez-le :

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();
}

Exemple :

 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));
 }

Sortie : bytes = [ 0x01 0xFF 0x2E 0x6E 0x30 ]

22voto

Jon Skeet Points 692016

Si vous êtes heureux de l'imprimer en décimal, vous pouvez simplement le rendre positif en le masquant :

int positive = bytes[i] & 0xff;

Cependant, si vous imprimez un hachage, il serait plus conventionnel d'utiliser l'hexagone. Il y a beaucoup d'autres questions sur Stack Overflow concernant la conversion de données binaires en chaîne hexadécimale en Java.

11voto

Vinit Prajapati Points 1529

Essayez celui-là : new String(byte[])

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X