java进制转换方法

文章目录

一、基本概念

1.1 进制定义

  • 二进制(Binary) : 基数为2,由数字0和1组成,通常用B表示
  • 八进制(Octal) : 基数为8,由数字0-7组成,通常用OQ表示
  • 十进制(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
    }
}

四、常见应用场景

  1. 位运算: 二进制常用于位操作和掩码处理
  2. 文件权限: Linux/Unix系统中的八进制权限表示
  3. 颜色值: 网页开发中的十六进制颜色代码
  4. 内存地址: 调试和底层编程中的十六进制地址表示
  5. 数据压缩: 不同进制间的转换可用于数据编码和压缩

方法总结

方法一:

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);
	}

参考文档

相关推荐
BU摆烂会噶2 分钟前
【LangGraph】持久化实现的三大能力——人机交互
数据库·人工智能·python·langchain·人机交互
csbysj20202 分钟前
CSS !important:深度解析与最佳实践
开发语言
善恶怪客6 分钟前
Java-数据类型
java
初心未改HD7 分钟前
Go语言测试与Benchmark:测试驱动开发的实践指南
开发语言·golang
学习3人组11 分钟前
Mes全连路架构图
java·erp
chxii15 分钟前
lua流程控制语句和table(表)数据结构
开发语言·junit·lua
.柒宇.16 分钟前
AI掘金头条项目部署实践指南
linux·运维·python·fastapi
上弦月-编程17 分钟前
C语言指针从入门到实战
java·jvm·算法
WL_Aurora17 分钟前
Python 算法基础篇之树和二叉树
python·算法
Cyan_RA918 分钟前
SpringMVC 请求数据绑定与参数映射 详解
java·后端·spring·mvc·springmvc·映射请求数据