Manipulation de byte, je ne comprend pas
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)
Code:
1 2 3 4 5 6
|
00111001
00011111
11100100
01110101
11111110 |
Or, si je demande à Java de mes les traiter, il va les considérer avec ces valeurs.
Code:
1 2 3 4 5 6
|
00111001
00011111
1111111111100100
01110101
1111111111111110 |
Cela se remarque notamment lorsque je lui demande d'afficher les byte via System.out.println(Integer.toByteString(i)).
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 ?