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?
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.