如何在 Java 中显示 hex/byte 值

How to display a hex/byte value in Java

int myInt = 144;
byte myByte = /* Byte conversion of myInt */;

输出应为 myByte : 90(十六进制值 144)。

所以,我做到了:

byte myByte = (byte)myInt;

我得到了 myByte : ffffff90 的输出。 :(

我怎样才能摆脱那些 ffffff

byte 是有符号类型。它的值在 -128 到 127 的范围内; 144不在这个范围内。 Java.

中没有无符号字节类型

如果您使用 Java 8,将其视为 0 到 255 范围内的值的方法是使用 Byte.toUnsignedInt:

String output = String.format("%x", Byte.toUnsignedInt(myByte));

(我不知道你如何格式化十六进制输出的整数。没关系。)

前Java 8、最简单的方法是

int byteValue = (int)myByte & 0xFF;
String output = String.format("%x", byteValue);

但在执行其中任何一项之前,请确保您确实想要使用 byte。您可能不需要。如果你想表示值 144,你不应该使用 byte,如果你不需要的话。只需使用 int.

使用以下 code:

int myInt = 144;
byte myByte = (byte)myInt;
System.out.println(myByte & 0xFF);

在Java8中,使用Byte.toUnsignedInt(myByte)ajb所说。

谢谢@ajb 和@sumit,我用了两个答案,

int myInt = 144;

byte myByte = (byte) myInt;

char myChar = (char) (myByte & 0xFF);

System.out.println("myChar :"+Integer.toHexString(myChar));

o/p,

myChar : 90