public class ByteUtils {
private static final char[] HEX_CHAR_ARR = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
private static final String HEX_STR = "0123456789ABCDEF";
/**
* 字节数组字符串
* @param btArr 字节数组
* @return 16进制字符串
*/
public static String byteArrToHex(byte[] btArr) {
char[] strArr = new char[btArr.length * 2];
int i = 0;
for (byte bt : btArr) {
strArr[i++] = HEX_CHAR_ARR[bt>>>4 & 0xf];
strArr[i++] = HEX_CHAR_ARR[bt & 0xf];
}
return new String(strArr);
}
/**
* 16进制字符串转字节数据
* @param hexStr 字符串
* @return 字节数组
*/
public static byte[] hexToByteArr(String hexStr) {
char[] charArr = hexStr.toCharArray();
byte[] btArr = new byte[charArr.length / 2];
int index = 0;
for (int i = 0; i < charArr.length; i++) {
int highBit = HEX_STR.indexOf(charArr[i]);
int lowBit = HEX_STR.indexOf(charArr[++i]);
btArr[index] = (byte) (highBit << 4 | lowBit);
index++;
}
return btArr;
}
}
Java中byte[]字节数据与String16进制字符串相互转换
最新推荐文章于 2024-07-31 04:22:13 发布