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

07-26 04:06