1、二进制转十六进制
输入:二进制字符串
输出:十六进制字符串
public class Bin2Hex {
public static void main(String[] args){
String binString = "1010101010101011101011000000000100000000000000010000000100010000";
String result = bin2hex(binString);
System.out.println("转换结果:" + result);
}
public static String bin2hex(String input) {
StringBuilder sb = new StringBuilder();
int len = input.length();
System.out.println("原数据长度:" + (len / 8) + "字节");
for (int i = 0; i < len / 4; i++){
//每4个二进制位转换为1个十六进制位
String temp = input.substring(i * 4, (i + 1) * 4);
int tempInt = Integer.parseInt(temp, 2);
String tempHex = Integer.toHexString(tempInt).toUpperCase();
sb.append(tempHex);
}
return sb.toString();
}
}
输出结果:
2、十六进制转二进制
输入:十六进制字符串
输出:二进制字符串(1个十六进制位对应4个二进制位)
public class Hex2Bin {
public static void main(String[] args){
String hexString = "AAABAC0100010110";
String result = hex2bin(hexString);
System.out.println("转换结果:" + result);
}
public static String hex2bin(String input) {
StringBuilder sb = new StringBuilder();
int len = input.length();
System.out.println("原数据长度:" + (len / 2) + "字节");
for (int i = 0; i < len; i++){
//每1个十六进制位转换为4个二进制位
String temp = input.substring(i, i + 1);
int tempInt = Integer.parseInt(temp, 16);
String tempBin = Integer.toBinaryString(tempInt);
//如果二进制数不足4位,补0
if (tempBin.length() < 4){
int num = 4 - tempBin.length();
for (int j = 0; j < num; j++){
sb.append("0");
}
}
sb.append(tempBin);
}
return sb.toString();
}
}
输出结果:
PS:
如果在IDEA里报错:常量字符串过长,则需要修改配置。
在“File->Settings->Build,Execution,Deployment->Compiler->Java Compiler”中,将“Use compiler”修改为“Eclipse”,如下图所示:
欢迎关注我的微信公众号: