把十六进制拆分成一个字符,在把每个字符转化为对应的二进制数
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); }
运行截图:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)