1. 程式人生 > >java將16進位制與10進位制互相轉換

java將16進位制與10進位制互相轉換

今天遇到了進位制轉換的有趣問題,記錄下來。
1,首先,10進位制轉16進位制,大家應該都比較熟:

Integer x = 666;
String hex = x.toHexString(x);
System.out.println(hex);

打印出來的資訊是“29a”,需要注意這裡轉換完的hex是字串,值是16進位制的一個數;

2,然後是16進位制轉10進位制, 可能遇到兩種情況:

1)fff;
2)0xfff; 

1)第一種fff好辦,直接如下:

String hex = "fff";
Integer x = Integer.parseInt(hex,16);
System.out
.println(x);

列印的值為4095。

2)第二種呢,用上述方法就行不通了,因為會將“x”當做16進位制的數進行轉換,顯然”x”不屬於16進位制裡的表示。所以得想個辦法把前面的“0x”去掉。

java中,String抽象類自帶了一個方法:substring,說明如下:
這裡寫圖片描述
這裡寫圖片描述
一目瞭然,通俗的說就是擷取原字串的某個連續片段。
好了,轉換程式碼如下:

String hex = "0xfff";
Integer x = Integer.parseInt(hex.substring(2),16);//從第2個字元開始擷取
System.out.println(x);

列印結果也是4095,說明方法正確;