如果是十六进制的数字和二进制的数字相互之间进行转换的话,只需要调用 Integer.tobinarystring() 或者 Integer.tohexString() 就可以进行转换,
但是如果是字符串的时候,该怎么转换呢?而且字符串如果很长的话,要怎么处理?
1、十六进制字符串转换成二进制字符串
规则:将十六进制字符串的每一个字符单独转换成一个四位的二进制字符串,然后拼接成一个完整的二进制字符串
代码如下:
/**
* 将十六进制的字符串转换成二进制的字符串
*
* @param hexString
* @return
*/
public static String hexStrToBinaryStr(String hexString) {
if (hexString == null || hexString.equals("")) {
return null;
}
StringBuffer sb = new StringBuffer();
// 将每一个十六进制字符分别转换成一个四位的二进制字符
for (int i = 0; i < hexString.length(); i++) {
String indexStr = hexString.substring(i, i + 1);
String binaryStr = Integer.toBinaryString(Integer.parseInt(indexStr, 16));
while (binaryStr.length() < 4) {
binaryStr = "0" + binaryStr;
}
sb.append(binaryStr);
}
return sb.toString();
}
2、将二进制字符串转换成十六进制的字符串
规则:二进制字符串的长度一定要是4的倍数,保证每四位对应一位十六进制字符。然后将二进制字符串的每四位转换成一位十六进制字符串,最后拼接在一起。
代码如下:
/**
* 二进制字符串转换为十六进制字符串
* <p>
* 二进制字符串位数必须满足是4的倍数
*
* @param binaryStr
* @return
*/
public static String binaryStrToHexStr(String binaryStr) {
if (binaryStr == null || binaryStr.equals("") || binaryStr.length() % 4 != 0) {
return null;
}
StringBuffer sbs = new StringBuffer();
// 二进制字符串是4的倍数,所以四位二进制转换成一位十六进制
for (int i = 0; i < binaryStr.length() / 4; i++) {
String subStr = binaryStr.substring(i * 4, i * 4 + 4);
String hexStr = Integer.toHexString(Integer.parseInt(subStr, 2));
sbs.append(hexStr);
}
return sbs.toString();
}