进制转换总结
1,普通进制转换
1. 十进制转二进制
int decNum = 10;
String binaryNum = Integer.toBinaryString(decNum);
System.out.println(binaryNum); // 输出:1010
2. 十进制转八进制
int decNum = 10;
String octalNum = Integer.toOctalString(decNum);
System.out.println(octalNum); // 输出:12
3. 十进制转十六进制
int decNum = 10;
String hexNum = Integer.toHexString(decNum);
System.out.println(hexNum); // 输出:a
4. 二进制转十进制
String binaryNum = "1010";
int decNum = Integer.parseInt(binaryNum, 2);
System.out.println(decNum); // 输出:10
5. 八进制转十进制
String octalNum = "12";
int decNum = Integer.parseInt(octalNum, 8);
System.out.println(decNum); // 输出:10
6. 十六进制转十进制
String hexNum = "a";
int decNum= Integer.parseInt(hexNum,16);
System.out.println(decNum); // 输出:10
2,大数的进制转换:
在Java中,如果要进行大数的进制转换,可以使用`BigInteger`类。下面是一个将十进制大数转换为二进制、八进制和十六进制的示例:
import java.math.BigInteger;public class BigIntegerExample {public static void main(String[] args) {String bigNumberStr = "12345678901234567890";// 将十进制大数转换为二进制BigInteger bigNumber = new BigInteger(bigNumberStr);String binaryStr = bigNumber.toString(2);System.out.println("二进制: " + binaryStr);// 将十进制大数转换为八进制String octalStr = bigNumber.toString(8);System.out.println("八进制: " + octalStr);// 将十进制大数转换为十六进制String hexStr = bigNumber.toString(16);System.out.println("十六进制: " + hexStr);}
}
输出结果如下:
二进制: 1011000110100111110011000000011111011101100110101011110010100110
八进制: 132653365427234702146
十六进制: 2dfdc4a632ef3d96a4
其他进制转十进制
Java中使用`BigInteger`类来处理大数的其他进制转换为10进制。
`BigInteger`类提供了一个静态方法`valueOf(String val, int radix)`,可以将一个指定进制的字符串转换为一个`BigInteger`类型的对象,并且该对象表示以10进制方式表示的值。其中,参数`val`是要转换的字符串,参数`radix`是该字符串所使用的进制数。
例如,如果需要将一个16进制大数转换为10进制,可以使用以下代码:
String hexStr = "7B"; // 16进制大数
BigInteger decimalNum = new BigInteger(hexStr, 16); // 将16进制大数转换为10进制整数
System.out.println(decimalNum); // 输出:123
同样地,如果要将一个8进制大数转换为10进制,可以这样写:
String octStr = "173"; // 8进制大数
BigInteger decimalNum = new BigInteger(octStr, 8); // 将8进制大数转换为10进制整数
System.out.println(decimalNum); // 输出:123
需要注意的是,在进行任何类型的数字转换时,都应该注意数据溢出问题。如果数字过大而无法被Java中的整型类型表示,则会导致溢出,并得到错误的结果。在这种情况下,可能需要使用Java中的`BigDecimal`或者更加专业化、能够支持更多位运算和更多精度控制的第三方库。