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;}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
