byte[]数组与16进制字符串的相互转换1.将byte[]数组转换成16进制字符
/**
*  将byte[]数组转换成16进制字符。⼀个byte⽣成两个字符,长度对应1:2
* @param bytes,输⼊byte[]数组
* @return 16进制字符
*/
public static String byte2Hex(byte[] bytes) {
if (bytes == null) {
return null;
}
StringBuilder builder = new StringBuilder();
/
/ 遍历byte[]数组,将每个byte数字转换成16进制字符,再拼接起来成字符串数组转换成字符串
for (int i = 0; i < bytes.length; i++) {
// 每个byte转换成16进制字符时,bytes[i] & 0xff如果⾼位是0,输出将会去掉,所以+0x100(在更⾼位加1),再截取后两位字符            builder.String((bytes[i] & 0xff) + 0x100, 16).substring(1));
}
String();
}
2.将16进制字符转换成byte[]数组
/**
*  将16进制字符转换成byte[]数组。与byte2Hex功能相反。
* @param string 16进制字符串
* @return byte[]数组
*/
public static byte[] hex2Byte(String string) {
if (string == null || string.length() < 1) {
return null;
}
// 因为⼀个byte⽣成两个字符,长度对应1:2,所以byte[]数组长度是字符串长度⼀半
byte[] bytes = new byte[string.length() / 2];
// 遍历byte[]数组,遍历次数是字符串长度⼀半
for (int i = 0; i < string.length() / 2; i++) {
// 截取没两个字符的前⼀个,将其转为int数值
int high = Integer.parseInt(string.substring(i * 2, i * 2 + 1), 16);
// 截取没两个字符的后⼀个,将其转为int数值
int low = Integer.parseInt(string.substring(i * 2 + 1, i * 2 + 2), 16);
// ⾼位字符对应的int值*16+低位的int值,强转成byte数值即可
// 如dd,⾼位13*16+低位13=221(强转成byte⼆进制11011101,对应⼗进制-35)
bytes[i] = (byte) (high * 16 + low);
}
return bytes;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。