天天看點

java中byte數組與十六進制字元串互相轉換

最近在做加密算法的研究和使用,經常會用到byte數組和十六進制字元串的轉換。之前對于此類問題我一般都是使用biginteger這個類轉換一下算了,這樣為了看輸出不是亂碼。這其實都不是根本上的解決方案。

最簡單的轉換方法:

我們看看java的byte[]數組的原理:

java中byte用二進制表示占用8位,而我們知道16進制的每個字元需要用4位二進制位來表示。

是以我們就可以把每個byte轉換成兩個相應的16進制字元,即把byte的高4位和低4位分别轉換成相應的16進制字元h和l,并組合起來得到byte轉換到16進制字元串的結果new string(h) + new string(l)。

同理,相反的轉換也是将兩個16進制字元轉換成一個byte,原理同上。

根據以上原理,我們就可以将byte[] 數組轉換為16進制字元串了,當然也可以将16進制字元串轉換為byte[]數組了。

一下是代碼工具類:

運作後效果:

java中byte數組與十六進制字元串互相轉換