[英]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));
(我不知道你如何格式化十六进制输出的整数。没关系。)
Pre-Java 8,最简单的方法是
int byteValue = (int)myByte & 0xFF;
String output = String.format("%x", byteValue);
但在你做其中任何一个之前,确保你真的想要使用一个byte
。 你可能不需要。 如果你想表示值144,你不应该使用一个byte
,如果你不需要。 只需使用int
。
谢谢@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)myInt;
System.out.println(myByte & 0xFF);
在Java 8中,使用Byte.toUnsignedInt(myByte)
作为ajb表示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.