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
demandé sur Peter Mortensen 2015-04-10 08:26:10

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 .

4
répondu ajb 2015-04-10 05:35:07

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
2
répondu Jyo the Whiff 2016-09-26 18:08:50

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.

0
répondu Sumit Singh 2015-06-27 20:49:17