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
即可。