繁体   English   中英

如何在Java中显示十六进制/字节值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM