Comment afficher une valeur hex/byte en Java
int myInt = 144;
byte myByte = /* Byte conversion of myInt */;
La sortie doit être myByte : 90
(valeur hexadécimale de 144).
donc, je l'ai fait:
byte myByte = (byte)myInt;
j'ai eu la sortie de myByte : ffffff90
. : (
Comment puis-je me débarrasser de ces ffffff
?
3 réponses
byte
est un type signé. Ses valeurs se situent dans la fourchette de -128 à 127; 144 n'est pas dans cette fourchette. Il n'y a pas de type byte non signé en Java.
si vous utilisez Java 8, la façon de traiter cette valeur comme une valeur dans la gamme 0 à 255 est d'utiliser Byte.toUnsignedInt
:
String output = String.format("%x", Byte.toUnsignedInt(myByte));
(Je ne sais pas comment vous avez formaté l'entier pour la sortie hex. Il n'a pas d'importance.)
Pre-Java 8, la manière la plus facile est
int byteValue = (int)myByte & 0xFF;
String output = String.format("%x", byteValue);
Mais avant de vous faire une de ces, assurez-vous que vous voulez vraiment utiliser un byte
. Les Chances sont que vous n'avez pas besoin d'. Et si vous voulez représenter la valeur de 144, vous ne devriez pas utiliser un byte
, si vous n'en avez pas besoin. Il suffit d'utiliser un int
.
Merci @ajb et @sumit, j'ai utilisé les deux réponses,
int myInt = 144;
byte myByte = (byte) myInt;
char myChar = (char) (myByte & 0xFF);
System.out.println("myChar :"+Integer.toHexString(myChar));
o/ p,
myChar : 90
utiliser le code suivant code :
int myInt = 144;
byte myByte = (byte)myInt;
System.out.println(myByte & 0xFF);
en Java 8, utilisez Byte.toUnsignedInt(myByte)
comme ajb said.