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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?