Java基于字符串的进制转换(2、8、16进制与10进制的相互转换)
# 2,8,16进制转换成10进制
(1).使用Integer.parseInt()方法;转换成负数只需要在字符串前加上负号-;大于Integer.MAX_VALUE或小于Integer.MIN_VALUE的转换将会抛出错误。
// 2,8,16进制转换成10进制
// 使用Integer.parseInt()方法;转换成负数只需要在字符串前面加上负号-;大于Integer.MAX_VALUE或小于Integer.MIN_VALUE的转换将会抛出错误。
int b = Integer.parseInt("1001", 2); // 2进制转10进制
int o = Integer.parseInt("12", 8); // 8进制转10进制
int h = Integer.parseInt("123ABC", 16); // 16进制转10进制
System.out.println("=== 字符串2,8,16进制转换成整型10进制 ===");
System.out.println("1001(2) --> " + b + "(10)");
System.out.println("12(8) --> " + o + "(10)");
System.out.println("123ABC(16) --> " + h + "(10)");
(2).使用Integer.valueOf()方法;转换成负数只需要在字符串前加上负号-;大于Integer.MAX_VALUE或小于Integer.MIN_VALUE的转换将会抛出错误。
// 2,8,16进制转换成10进制
// 使用Integer.valueOf()方法;转换成负数只需要在字符串前加上负号-;大于Integer.MAX_VALUE或小于Integer.MIN_VALUE的转换将会抛出错误。
Integer b = Integer.valueOf("1001", 2); // 2进制转10进制
Integer o = Integer.valueOf("12", 8); // 8进制转10进制
Integer h = Integer.valueOf("123ABC", 16); // 16进制转10进制
System.out.println("=== Integer.valueOf() 字符串2,8,16进制转换成整型10进制 ===");
System.out.println("1001(2) --> " + b + "(10)");
System.out.println("12(8) --> " + o + "(10)");
System.out.println("123ABC(16) --> " + h + "(10)");
(3).基于BigInteger的进制转换,能够存储比Long.MAX_VALUE更大的数;
// 2,8,16进制转换成10进制
// 使用BigInteger对象;转换成负数只需要在字符串前加上负号-;BigInteger能够存储比Long.MAX_VALUE更大的数;
BigInteger b = new BigInteger("1001", 2); // 2进制转10进制
BigInteger o = new BigInteger("12", 8); // 8进制转10进制
BigInteger h = new BigInteger("123ABC", 16);// 16进制转10进制
System.out.println("=== 基于BigInteger的进制转换 字符串2,8,16进制转换成整型10进制 ===");
System.out.println("1001(2) --> " + b + "(10)");
System.out.println("12(8) --> " + o + "(10)");
System.out.println("123ABC(16) --> " + h + "(10)");
# 10进制转2,8,16进制,返回类型String
(1).
// 10进制转2,8,16进制,返回类型String
String tb = Integer.toBinaryString(9); // 10进制转2进制
String to = Integer.toOctalString(10); // 10进制转8进制
String th = Integer.toHexString(1194684); // 10进制转16进制
System.out.println("=== 10进制转2,8,16进制,返回类型String ===");
System.out.println("9(10) --> " + tb + "(2)");
System.out.println("10(10) --> " + to + "(8)");
System.out.println("1194684(10) --> " + th + "(16)");
(2).使用Integer.toString() 10进制转2,8,16进制;返回类型String
// 10进制转2,8,16进制,返回类型String
// 使用Integer.toString()方法;
String tb = Integer.toString(9, 2); // 10进制转2进制
String to = Integer.toString(10, 8); // 10进制转8进制
String th = Integer.toString(1194684, 16);// 10进制转16进制
System.out.println("=== 使用Integer.toString() 10进制转2,8,16进制;返回类型String ===");
System.out.println("9(10) --> " + tb + "(2)");
System.out.println("10(10) --> " + to + "(8)");
System.out.println("1194684(10) --> " + th + "(16)");
(3).基于BigInteger的进制转换
// 使用BigInteger对象的toString方法;10进制转2,8,16进制,返回类型String
BigInteger b = new BigInteger("1001", 2); // 2进制转10进制
BigInteger o = new BigInteger("12", 8); // 8进制转10进制
BigInteger h = new BigInteger("123ABC", 16);// 16进制转10进制
String tb = b.toString(2); // 10进制转2进制
String to = o.toString(8); // 10进制转8进制
String th = h.toString(16); // 10进制转16进制
System.out.println("1001(2) --> " + b + "(10) --> " + tb + "(2)");
System.out.println("12(8) --> " + o + "(10) --> " + to + "(8)");
System.out.println("123ABC(16) --> " + h + "(10) --> " + th + "(16)");