Java中byte[]与十六进制之间的转化
生活随笔
收集整理的這篇文章主要介紹了
Java中byte[]与十六进制之间的转化
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Java中byte是占8位二進制,十六進制的數是用4位二進制來表示的。因此當byte轉十六進制時,將byte的8位二進制,分為高4位和低4位并分別轉化為相應的十六進制,再合到一起即可。當十六進制轉byte時,將兩個十六進制數轉化為相應的byte即可。
?
byte[]與十六進制字符串之間的轉化代碼如下:
public class BytesAndHex {/*** byte[]轉十六進制* @param bytes* @return*/public String bytesTohex(byte[] bytes) {StringBuilder hex = new StringBuilder();for (int i = 0; i < bytes.length; i++) {byte b = bytes[i];boolean flag = false;if (b < 0) flag = true;int absB = Math.abs(b);if (flag) absB = absB | 0x80;System.out.println(absB & 0xFF);String tmp = Integer.toHexString(absB & 0xFF);if (tmp.length() == 1) { //轉化的十六進制不足兩位,需要補0hex.append("0");}hex.append(tmp.toLowerCase());}return hex.toString();}/*** 十六進制轉byte[]* @param hex* @return*/public byte[] hexTobytes(String hex) {byte[] bytes = new byte[hex.length() / 2];for (int i = 0; i < hex.length(); i = i + 2) {String subStr = hex.substring(i, i + 2);boolean flag = false;int intH = Integer.parseInt(subStr, 16);if (intH > 127) flag = true;if (intH == 128) {intH = -128;} else if (flag) {intH = 0 - (intH & 0x7F);}byte b = (byte) intH;bytes[i / 2] = b;}return bytes;} }?
總結
以上是生活随笔為你收集整理的Java中byte[]与十六进制之间的转化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 重启到bios蓝屏怎么办 bios重启蓝
- 下一篇: 对实体 quot;useSSLquot;