首先我們要知道比特的大小是多少,Java中的定義為byte ,不論是CC++還是Java,一個字節都是8個位
其表示就是 XXXX XXXX x表示0或者1 而每四個為可以表示為16進制,最小是0=0x0 最大是15=0xF
也就是說一個byte為,可以由兩個16進制數字表示,所以可以定義十六進制的數組,下表表示十進制數值,本身是16進制的String
所以1表示為1,10表示為a,15表示為f
上代碼:
public static String byteTo16(byte bt){ String[] strHex={"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"}; String resStr=""; int low =(bt & 15); int high = bt>>4 & 15; resStr = strHex[high]+strHex[low]; return resStr; } public static void main(String[] args){ Byte bt = 44; String res = byteTo16(bt); System.out.println(res); }
這里我們用到的位運算 & 也就是安位去“與”
比如說一個數字是44,變成二進制為101100,如果16進制表示則需要前面補充0 也就是等於:0010 1100
15是16進制的最大值f,也就是1111 ,所以當0010 1100 & 0000 1111,這樣就得到地位四個值,1100=12,strHex[2]=c
低4位已經搞定,用位移運算將第四位一走,44>>4就是0010 1100 為以后等於0000 0010 (1100被移出)
0000 0010 & 15=0010=2,strHex[2]=2
所以高位2地位c字符串相加,得到16進制表示:2c
噹噹!!!完成