如何在 Java 中显示十六进制/字节值

Jyo*_*iff 3 java int hex byte

int myInt = 144;
byte myByte = /* Byte conversion of myInt */;
Run Code Online (Sandbox Code Playgroud)

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

所以我做了:

byte myByte = (byte)myInt;
Run Code Online (Sandbox Code Playgroud)

我得到了myByte : ffffff90. :(

我怎样才能摆脱那些ffffff

ajb*_*ajb 6

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

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

String output = String.format("%x", Byte.toUnsignedInt(myByte));
Run Code Online (Sandbox Code Playgroud)

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

在 Java 8 之前,最简单的方法是

int byteValue = (int)myByte & 0xFF;
String output = String.format("%x", byteValue);
Run Code Online (Sandbox Code Playgroud)

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