本文主要是介绍Java中byte与16进制字符串的互相转换,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Java中byte与16进制字符串的互相转换
byte用二进制表示占8位;
16进制的每个字符需要用4位二进制位来表示;
每个byte转换成两个相应的16进制字符
public class HexConverUtils {
/**
* 16进制字符集
*/
private static final char HEX_DIGITS[] = {'0', '1', '2', '3', '4', '5',
'6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
/**
* 将字节数组转换成16进制字符串
*
* @param bytes 目标字节数组
* @return 转换结果
*/
public static String bytesToHex(byte bytes[]) {
return bytesToHex(bytes, 0, bytes.length);
}
/**
* 将字节数组中指定区间的子数组转换成16进制字符串
*
* @param bytes 目标字节数组
* @param start 起始位置(包括该位置)
* @param end 结束位置(不包括该位置)
* @return 转换结果
*/
public static String bytesToHex(byte bytes[], int start, int end) {
StringBuilder sb = new StringBuilder();
for (int i = start; i < start + end; i++) {
sb.append(byteToHex(bytes[i]));
}
return sb.toString();
}
/**
* 将单个字节码转换成16进制字符串
*
* @param bt 目标字节
* @return 转换结果
*/
public static String byteToHex(byte bt) {
return HEX_DIGITS[(bt & 0xf0) >> 4] + "" + HEX_DIGITS[bt & 0xf];
}
/**
* 将16进制字符串转换成字节数组
*
* @param hexString 16进制字符串
* @return byte[] 字节数组
*/
public static byte[] hexToBytes(String hexString) {
if (hexString == null || hexString.equals("")) {
return null;
}
hexString = hexString.toUpperCase();
int length = hexString.length() / 2;
char[] hexChars = hexString.toCharArray();
byte[] d = new byte[length];
for (int i = 0; i < length; i++) {
int pos = i * 2;
d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
}
return d;
}
/**
* 将字符转换成字节
*
* @param c 字符
* @return byte 字节
*/
private static byte charToByte(char c) {
return (byte) "0123456789ABCDEF".indexOf(c);
}
}
这篇关于Java中byte与16进制字符串的互相转换的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!