java byte 16進制轉換


整型轉16進制:  

int devIdInt = Integer.parseInt(devId);
String devIdString = Integer.toHexString(devIdInt);

16進制轉為字節:

byte devBin = (byte) Integer.parseInt(devIdString, 16);

 byte devBin =Integer.valueOf(devIdString, 16).byteValue();  

 byte devBin =Byte.parseByte(devIdString, 16);

 

 

在Java中想把 9D 轉成 byte,首先想到的是

 

[java]  view plain copy
 
  1. byte v = Byte.parseByte("9D"16);  

 

結果得到一個java.lang.NumberFormatException,說值的范圍越界了。

是的,byte的范圍是-128~127,如果把9D當成正數來轉換,結果是157,當然越界了。

問題是我用的是Byte.parseByte()啊……難道Java還不能明確我是要把2位16進制轉換為byte么?最高位是1的情況,直接給我轉換成負數-99就行,干嘛非要轉換成157再告訴我越界呢……神仙!

 

無奈+無語之后當然還是要解決問題的,Byte.parseByte()不行,那只好用Integer.parseInt()啦……

所以有這樣兩個處理辦法

 

[c-sharp]  view plain copy
 
  1. byte v = (byte) Integer.parseInt("9D", 16);  
  2. // 或者  
  3. byte v = Integer.valueOf("9D", 16).byteValue();  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM