byte值變16進制打印的 方法解析


首先我們要知道比特的大小是多少,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 

噹噹!!!完成


免責聲明!

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



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