今天遇到了進(jìn)制轉(zhuǎn)換的有趣問題缀匕,記錄下來贸辈。
1释树,首先,10進(jìn)制轉(zhuǎn)16進(jìn)制,大家應(yīng)該都比較熟:
Integer x = 666;
String hex = x.toHexString(x);
System.out.println(hex);
打印出來的信息是“29a”奢啥,需要注意這里轉(zhuǎn)換完的hex是字符串署浩,值是16進(jìn)制的一個數(shù);
2扫尺,然后是16進(jìn)制轉(zhuǎn)10進(jìn)制筋栋, 可能遇到兩種情況:
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進(jìn)制的數(shù)進(jìn)行轉(zhuǎn)換襟交,顯然"x"不屬于16進(jìn)制里的表示。所以得想個辦法把前面的“0x”去掉伤靠。
java中捣域,String抽象類自帶了一個方法:substring,說明如下:
一目了然宴合,通俗的說就是截取原字符串的某個連續(xù)片段焕梅。
好了,轉(zhuǎn)換代碼如下:
String hex = "0xfff";
Integer x = Integer.parseInt(hex.substring(2),16);//從第2個字符開始截取
System.out.println(x);
打印結(jié)果也是4095卦洽,說明方法正確贞言;
突然覺得自己so handsome.