文章目录
一、基本概念
1.1 进制定义
- 二进制(Binary) : 基数为2,由数字0和1组成,通常用
B表示 - 八进制(Octal) : 基数为8,由数字0-7组成,通常用
O或Q表示 - 十进制(Decimal) : 基数为10,由数字0-9组成,通常用
D表示 - 十六进制(Hexadecimal) : 基数为16,由数字0-9和字母A-F组成,通常用
H表示
1.2 Java中的进制表示
java
// Java中不同进制的字面量表示
int binary = 0b1010; // 二进制,以 0b 或 0B 开头
int octal = 01010; // 八进制,以 0 开头
int decimal = 1010; // 十进制,无前缀
int hex = 0x1010; // 十六进制,以 0x 或 0X 开头
二、进制转换原理
2.1 任意进制转十进制
公式 : 对于基数为k的数值dn-1 dn-2 ... d1 d0,其十进制值为:
∑ i = 0 n − 1 d i × k n − 1 − i \sum_{i=0}^{n-1} d_i \times k^{n-1-i} i=0∑n−1di×kn−1−i
示例:
- 二进制
1101→ 1 × 2 3 + 1 × 2 2 + 0 × 2 1 + 1 × 2 0 = 8 + 4 + 0 + 1 = 13 1 \times 2^3 + 1 \times 2^2 + 0 \times 2^1 + 1 \times 2^0 = 8 + 4 + 0 + 1 = 13 1×23+1×22+0×21+1×20=8+4+0+1=13 - 十六进制
B2→ 11 × 16 1 + 2 × 16 0 = 176 + 2 = 178 11 \times 16^1 + 2 \times 16^0 = 176 + 2 = 178 11×161+2×160=176+2=178
2.2 十进制转任意进制
使用"除基取余法":不断将十进制数除以目标进制的基数,直到商为0,然后将余数倒序排列。
三、Java API 转换方法
3.1 十进制转其他进制
十进制转二进制
java
public static String toBinaryString(int i)
java
int decimalNumber = 10;
String binaryString = Integer.toBinaryString(decimalNumber);
System.out.println(binaryString); // 输出 "1010"
十进制转八进制
java
public static String toOctalString(int i)
java
int decimalNumber = 10;
String octalString = Integer.toOctalString(decimalNumber);
System.out.println(octalString); // 输出 "12"
十进制转十六进制
java
public static String toHexString(int i)
java
int decimalNumber = 10;
String hexString = Integer.toHexString(decimalNumber);
System.out.println(hexString); // 输出 "a"
3.2 其他进制转十进制
任意进制转十进制
java
public static int parseInt(String s, int radix)
s: 待转换的字符串radix: 进制基数(2, 8, 10, 16等)
java
// 二进制转十进制
int decimalFromBinary = Integer.parseInt("1010", 2); // 结果: 10
// 八进制转十进制
int decimalFromOctal = Integer.parseInt("12", 8); // 结果: 10
// 十六进制转十进制
int decimalFromHex = Integer.parseInt("a", 16); // 结果: 10
3.3 完整示例代码
java
public class NumberBaseConverter {
public static void main(String[] args) {
int decimal = 255;
// 十进制转其他进制
System.out.println("十进制 " + decimal + " 转换为:");
System.out.println("二进制: " + Integer.toBinaryString(decimal)); // 11111111
System.out.println("八进制: " + Integer.toOctalString(decimal)); // 377
System.out.println("十六进制: " + Integer.toHexString(decimal)); // ff
// 其他进制转十进制
System.out.println("\n其他进制转十进制:");
System.out.println("二进制 11111111: " + Integer.parseInt("11111111", 2)); // 255
System.out.println("八进制 377: " + Integer.parseInt("377", 8)); // 255
System.out.println("十六进制 ff: " + Integer.parseInt("ff", 16)); // 255
}
}
四、常见应用场景
- 位运算: 二进制常用于位操作和掩码处理
- 文件权限: Linux/Unix系统中的八进制权限表示
- 颜色值: 网页开发中的十六进制颜色代码
- 内存地址: 调试和底层编程中的十六进制地址表示
- 数据压缩: 不同进制间的转换可用于数据编码和压缩
方法总结
方法一:
Integer.toBinaryString(i)表示十进制转为二进制
Integer.toOctalString(i)表示十进制转为八进制
Integer.toHexString(i)表示十进制转为十六进制

java
public static void main(String[] args) {
String num1 = Integer.toBinaryString(15); // 1111
String num2 = Integer.toOctalString(15); // 17
String num3 = Integer.toHexString(15); // f
}
方法二:
Integer.toString(int i, int radix);,十进制i转为radix进制(radix默认值是10)
java
public static void main(String[] args) {
String n = Integer.toString(5,2); // 101
String m = Integer.toString(5,4); // 11
System.out.println(n);
System.out.println(m);
}