如何在 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
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