簡體   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