Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Byte.parseByte - Value out of range

4 réponses
Avatar
Alex
Bonjour,

J'essaye d'utiliser la fonction Byte.parseByte
afin de convertir un nombre en hexa en un byte.

Si j'ai bien tout compris 1 byte / octet c'est 8
bits, donc 2 blocs de 4 bits.

System.out.println(Byte.parseByte("b", 16));
écrit bien 11
b en hexa == 11 en decimal == 1011 en binaire

maintenant si j'essaye
System.out.println(Byte.parseByte("bb", 16));
je me récupère:
java.lang.NumberFormatException: Value out of range. Value:"bb" Radix:16

Or bb (base 16) vaut en binaire les 2 blocs de 4 bits suivant (soit
8bits, soit 1 octet/byte):
1011 1011
Bref si ca rentre dans un byte, pourquoi je récupère une exception:
"Value out of range"???

Merci,

--
Alex

4 réponses

Avatar
Raphael Tagliani
Euh... en signé (complément à deux), ça te donne 1011 1011? Tu en es sûr?

Extrait de la javadoc de Byte:

Parses the string argument as a *signed* byte

Bonjour,

J'essaye d'utiliser la fonction Byte.parseByte
afin de convertir un nombre en hexa en un byte.

Si j'ai bien tout compris 1 byte / octet c'est 8
bits, donc 2 blocs de 4 bits.

System.out.println(Byte.parseByte("b", 16));
écrit bien 11
b en hexa == 11 en decimal == 1011 en binaire

maintenant si j'essaye
System.out.println(Byte.parseByte("bb", 16));
je me récupère:
java.lang.NumberFormatException: Value out of range. Value:"bb" Radix:16

Or bb (base 16) vaut en binaire les 2 blocs de 4 bits suivant (soit
8bits, soit 1 octet/byte):
1011 1011
Bref si ca rentre dans un byte, pourquoi je récupère une exception:
"Value out of range"???

Merci,



Avatar
Alex
Euh... en signé (complément à deux), ça te donne 1011 1011? Tu en es sûr?

Extrait de la javadoc de Byte:

Parses the string argument as a *signed* byte



Oui en effet, j'ai fini par trouver la solution:
http://www.scadasec.net/secwiki/JavaTricks

Merci Java qui ne cannait pas les types non signés...

--
Alex

Avatar
Arnaud W.
On 24 fév, 21:08, Alex wrote:
Bonjour,

Si j'ai bien tout compris 1 byte / octet c'est 8
bits, donc 2 blocs de 4 bits.


Juste en passant, pour être parfaitement rigoureux, un byte n'est égal
à un octet (même si c'est parfois le cas).

- Un byte est un groupement de bits adjacents, pas toujours au nombre
de 8 (même si c'est souvent le cas à présent).
- Un octet est un groupement de bits adjacents, au nombre de 8 (d'où
son nom)

D'ailleurs, la plupart des dictionnaires considèrent que la synonymie
entre byte et octet est abusive.

http://fr.wikipedia.org/wiki/Byte
http://fr.wikipedia.org/wiki/Octet

C'est d'ailleurs comme pour le Baud (terme un peu moins utilisé
actuellement) :

- Un baud n'est égal à un bit/seconde (même si c'est parfois le cas).

http://fr.wikipedia.org/wiki/Baud

Avatar
Alex
On 24 fév, 21:08, Alex wrote:
Bonjour,

Si j'ai bien tout compris 1 byte / octet c'est 8
bits, donc 2 blocs de 4 bits.


Juste en passant, pour être parfaitement rigoureux, un byte n'est égal
à un octet (même si c'est parfois le cas).

- Un byte est un groupement de bits adjacents, pas toujours au nombre
de 8 (même si c'est souvent le cas à présent).
- Un octet est un groupement de bits adjacents, au nombre de 8 (d'où
son nom)

D'ailleurs, la plupart des dictionnaires considèrent que la synonymie
entre byte et octet est abusive.

http://fr.wikipedia.org/wiki/Byte
http://fr.wikipedia.org/wiki/Octet



Ok merci pour ces informations.
Cela dit "In reality, however, this term is really fairly useless, since
all electronics considering a byte more or less than 8-bits have been
phased out."

http://en.wikipedia.org/wiki/Octet_%28computing%29

Donc bon, culture et confiture quoi... ;)

--
Alex