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

参考文档

相关推荐
冰暮流星2 小时前
javascript之dom访问css
开发语言·javascript·css
KANGBboy2 小时前
anaconda 相关
python·conda
2301_792674862 小时前
java学习day27(算法)
java·学习·算法
财经资讯数据_灵砚智能2 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年4月11日
大数据·人工智能·python·信息可视化·自然语言处理·ai编程
XiaoQiao6669992 小时前
pytnon中正则表达式小题详解
python·正则表达式
楼田莉子2 小时前
设计模式:创建型设计模式简介
服务器·开发语言·c++·设计模式
好家伙VCC2 小时前
**基于Colab的高效Python深度学习开发流程:从环境配置到模型部署全流程实战**在当前人工智
java·开发语言·python·深度学习
Lucas_coding2 小时前
【python_并发】requests vs aiohttp vs httpx:HTTP客户端深度对比与实战
python
gCode Teacher 格码致知2 小时前
Python基础教学:正则表达式中的忽略大小写以及符号“-“的问题-由Deepseek产生
python·正则表达式