Bonjour à tous
Je me galère un peu sur un truc qui semble pourtant tout con.
En Java, le type byte est signé et va donc de -128 à 127.
Là je fais une appli qui récupère des données sur le port série. On a défini un format de trame (les trames font 20 bits et sont donc contenues dans 3 bytes). Je dois pouvoir déterminer la valeur de chaque bit de chaque byte (octet).
Et c là que ca se complique. Tant que je reçois des bytes dont le bit de poids le plus fort est à 0, ca ne pose pas de prbl (de 0 à 127 donc). Mais si ce dernier bit est à 1, je ne sais pas comment va se comporter java. En clair, si la valeur de l'octet est "1011 0111" par exemple, quelle sera la valeur en base 10 ? (sachant que ca ne peut pas être 183 puisqu'il faut tenir compte des négatifs).
J'ai voulu faire des tests pour comprendre comment ca se passait :
Code :
- byte tt = (byte) -20;
- String tempS = Integer.toBinaryString(tt);
|
Et dans ce cas il code -20 sur 4 bytes au lieu d'un seul ! (alors que si je met un nombre compris entre 0 et 127 il le code bien sur un byte).
Pour résumer le tout (c peut être un peu confu mais g fais du mieux que g pu) : comment déterminer la valeur de chaque bit d'un byte ?
merci d'avance