java的16進制與10進制互相轉(zhuǎn)換

今天遇到了進制轉(zhuǎn)換的有趣問題,記錄下來。
1,首先,10進制轉(zhuǎn)16進制,大家應(yīng)該都比較熟:

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

打印出來的信息是“29a”,需要注意這里轉(zhuǎn)換完的hex是字符串,值是16進制的一個數(shù);

2,然后是16進制轉(zhuǎn)10進制, 可能遇到兩種情況:

1)fff;
2)0xfff; 

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

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

打印的值為4095。

2)第二種呢,用上述方法就行不通了,因為會將“x”當(dāng)做16進制的數(shù)進行轉(zhuǎn)換,顯然"x"不屬于16進制里的表示。所以得想個辦法把前面的“0x”去掉。

java中,String抽象類自帶了一個方法:substring,說明如下:

1個參數(shù)
2個參數(shù)

一目了然,通俗的說就是截取原字符串的某個連續(xù)片段。
好了,轉(zhuǎn)換代碼如下:

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

打印結(jié)果也是4095,說明方法正確;

突然覺得自己so handsome.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容