methode de classe ToBinaryString

methode de classe ToBinaryString - Java - Programmation

Marsh Posté le 12-12-2006 à 13:28:01    

Bonjour,
 
Je suis en train de m'amuser avec cette méthode et me trouve face à des incohérences. Je m'explique:
 
Soit un flux qui s'appelle 'in'.
 

Code :
  1. byte buffer[] = new byte[3]; //mon tampon de 3 octets
  2. res = in.read(buffer);           // je mets 3 octets du fichier dans mon tampon
  3. String bloc1 = Integer.toBinaryString(buffer[0]);     // je veux la représentation sous forme de chaine du premier octet
  4. String bloc2 = Integer.toBinaryString(buffer[1]);     // je veux la représentation sous forme de chaine du deuxieme octet
  5. String bloc3 = Integer.toBinaryString(buffer[2]);     // je veux la représentation sous forme de chaine du troisieme octet


 
Voilà ce que me sort quand ca marche:

Code :
  1. 01010010|01100001|01110010


 
..donc là, pas de soucis, j'ai bien la retranscription en String de 3 octets, soient 24 bits.
 
au bout d'un certain nombre d'itérations (toujours le même), j'obtiens ceci:

Code :
  1. 00000000|11111111111111111111111111001111|11111111111111111111111110010000


 
.. comme vous pouvez voir, les 2 octets mis sous formes de chaines, ne sont plus vraiment des octets.
le premier fait 8 bits et les seconds font 32 bits (hasard? je pense pas..)
 
Voilà, je voulais savoir si vous aviez une idée de ce qu'il se passe lors de l'usage de ToBinaryString() ?
 
Merci bien :)
 
 

Reply

Marsh Posté le 12-12-2006 à 13:28:01   

Reply

Marsh Posté le 17-12-2006 à 12:17:38    

ok..alors je me réponds à moi-même en espérant que cela puisse servir.
Ces octets plus longs que les autres sont en fait la retranscription en string de valeur négative.
il faut donc faire une opération logique par dessus pour récuperer la partie nécessaire:

Code :
  1. buffer[n] & 0xFF


 
++

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed