Bonjour,
J'ai passé ma journée sur un bug que je ne comprend pas. J'ai finis pas le corriger, mais j'aimerais tout de même comprendre pourquoi sans cette correction, cela ne marche pas.
J'ai le tableau de byte suivant : (chaque ligne correspond à une case du tableau, et je les représente sous le forme binaire)
Or, si je demande à Java de mes les traiter, il va les considérer avec ces valeurs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 00111001 00011111 11100100 01110101 11111110
Cela se remarque notamment lorsque je lui demande d'afficher les byte via System.out.println(Integer.toByteString(i)).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 00111001 00011111 1111111111100100 01110101 1111111111111110
Pour corriger cela, je suis obliger d'appliquer un masque &0xFF afin de ne garde que le byte qui m'intéresse.
Est ce que quelqu'un peut m'expliquer ce comportement ?
On dirait que lorsque le bit de poid fort est à 1, alors java rajoute un byte suplémentaire. Mais pourquoi ?
Partager