Java中byte與16進位字串的互相轉換

來源:互聯網
上載者:User

    Java中byte用二進位表示佔用8位,而我們知道16進位的每個字元需要用4位二進位位來表示(23
+ 22
+ 21
+ 20
= 15),所以我們就可以把每個byte轉換成兩個相應的16進位字元,即把byte的高4位和低4位分別轉換成相應的16進位字元H和L,並組合起來得到byte轉換到16進位字串的結果new String(H) + new String(L)。

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

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

 

 

/**<br /> * Convert byte[] to hex string.這裡我們可以將byte轉換成int,然後利用Integer.toHexString(int)來轉換成16進位字串。<br /> * @param src byte[] data<br /> * @return hex string<br /> */<br /> public static String bytesToHexString(byte[] src){<br /> StringBuilder stringBuilder = new StringBuilder("");<br /> if (src == null || src.length <= 0) {<br /> return null;<br /> }<br /> for (int i = 0; i < src.length; i++) {<br /> int v = src[i] & 0xFF;<br /> String hv = Integer.toHexString(v);<br /> if (hv.length() < 2) {<br /> stringBuilder.append(0);<br /> }<br /> stringBuilder.append(hv);<br /> }<br /> return stringBuilder.toString();<br /> }<br /> /**<br /> * Convert hex string to byte[]<br /> * @param hexString the hex string<br /> * @return byte[]<br /> */<br /> public static byte[] hexStringToBytes(String hexString) {<br /> if (hexString == null || hexString.equals("")) {<br /> return null;<br /> }<br /> hexString = hexString.toUpperCase();<br /> int length = hexString.length() / 2;<br /> char[] hexChars = hexString.toCharArray();<br /> byte[] d = new byte[length];<br /> for (int i = 0; i < length; i++) {<br /> int pos = i * 2;<br /> d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));<br /> }<br /> return d;<br /> }<br /> /**<br /> * Convert char to byte<br /> * @param c char<br /> * @return byte<br /> */<br /> private byte charToByte(char c) {<br /> return (byte) "0123456789ABCDEF".indexOf(c);<br /> }

 

備忘: 關於代碼中第12行 int v = src[i] & 0xFF; 如有疑問,可以查看:java中byte轉換int時為何與0xff進行與運算

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.