把十六进制拆分成一个字符,在把每个字符转化为对应的二进制数
static String[] bin = {"0000", "0001", "0010", "0011",
"0100", "0101", "0110", "0111",
"1000", "1001", "1010", "1011",
"1100", "1101", "1110", "1111"};
public static String hexToDecimal(String x) {
char[] str = x.toCharArray();
StringBuilder res = new StringBuilder();
for (int i = 0; i < x.length(); i++) {
res.append(transform(str[i]));
}
return res.toString();
}
public static String transform(char ch) {
String result = "";
switch (ch) {
case '0':
result = bin[0];
break;
case '1':
result = bin[1];
break;
case '2':
result = bin[2];
break;
case '3':
result = bin[3];
break;
case '4':
result = bin[4];
break;
case '5':
result = bin[5];
break;
case '6':
result = bin[6];
break;
case '7':
result = bin[7];
break;
case '8':
result = bin[8];
break;
case '9':
result = bin[9];
break;
case 'A':
result = bin[10];
break;
case 'B':
result = bin[11];
break;
case 'C':
result = bin[12];
break;
case 'D':
result = bin[13];
break;
case 'E':
result = bin[14];
break;
case 'F':
result = bin[15];
break;
default:
break;
}
return result;
}
二进制转八进制
static String[] oct = {"0", "1", "2", "3", "4", "5", "6", "7"};
public static String binaryToOctal(String str) {
if (str.length() % 3 == 1) {
str = "00" + str;
}
if (str.length() % 3 == 2) {
str = "0" + str;
}
StringBuilder res = new StringBuilder();
int begin = 0, end = 3;
while (end <= str.length()) {
String substring = str.substring(begin, end);
switch (substring) {
case "000":
res.append(oct[0]);
break;
case "001":
res.append(oct[1]);
break;
case "010":
res.append(oct[2]);
break;
case "011":
res.append(oct[3]);
break;
case "100":
res.append(oct[4]);
break;
case "101":
res.append(oct[5]);
break;
case "110":
res.append(oct[6]);
break;
case "111":
res.append(oct[7]);
break;
default:
break;
}
begin = begin + 3;
end = end + 3;
}
return res.toString();
}
使用Integerpublic static void main(String[] args) {
System.out.println("=======Integer=======");
// 十进制转二进制
String bin01 = Integer.toBinaryString(10);
System.out.println("十进制: 10--->二进制: " + bin01);
// 十进制转八进制
String oct01 = Integer.toOctalString(10);
System.out.println("十进制: 10--->八进制: " + oct01);
// 十进制转十六进制
String hex01 = Integer.toHexString(10);
System.out.println("十进制: 10--->十六进制: " + hex01);
// 八进制转十进制
Integer decimal01 = Integer.valueOf("12", 8);
System.out.println("八进制: 12--->十进制: " + decimal01);
// 十六进制转化为十进制
Integer decimal02 = Integer.valueOf("a", 16);
System.out.println("十六进制: a--->十进制: " + decimal02);
}
运行截图:
当把十六进制转化为十进制时,如果数太大int容纳不下就会报错!可以使用下面一种方法解决。
public static void main(String[] args) {
System.out.println("=======BigInteger=======");
// 八进制转十进制
BigInteger decimal03 = new BigInteger("12", 8);
System.out.println("八进制: 12--->十进制: " + decimal03);
// 十六进制转化为十进制 C9DAB2B36C ---> 866957570924
BigInteger decimal04 = new BigInteger("C9DAB2B36C", 16);
System.out.println("十六进制: C9DAB2B36C--->十进制: " + decimal04);
// 十进制转二进制
String bin02 = decimal03.toString(2);
System.out.println("十进制: 10--->二进制: " + bin02);
// 十进制转八进制
String oct02 = decimal03.toString(8);
System.out.println("十进制: 10--->八进制: " + oct02);
// 十进制转十六进制
String hex02 = decimal03.toString(16);
System.out.println("十进制: 10--->十六进制: " + hex02);
}
运行截图:



