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