java进制转换首选integer.tostring()和integer.parseint(),支持2~36进制;带前缀用integer.decode();超范围用long或biginteger;位宽格式化用string.format()配合tobinarystring()。

Java 中进制转换非常简单,标准库已提供成熟方法,无需手动计算除法取余。重点在于理解适用场景、方法差异和边界细节。
十进制转二进制、十六进制(字符串形式)
使用 Integer.toString(int value, int radix) 最通用,支持任意进制(2~36):
- Integer.toString(255, 2) → "11111111"
- Integer.toString(255, 16) → "ff"(小写,不带前缀)
- 负数也支持:Integer.toString(-10, 2) → "-1010"
若需大写十六进制或加前缀(如 "0xFF"),可组合使用:
"0x" + Integer.toHexString(255).toUpperCase() → "0xFF"
二进制/十六进制字符串转十进制
用 Integer.parseInt(String s, int radix),注意参数顺序和异常处理:
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
- Integer.parseInt("11111111", 2) → 255
- Integer.parseInt("FF", 16) → 255(自动忽略大小写)
- 字符串不能含前缀:"0xFF" 会抛 NumberFormatException,需先截掉 "0x" 或用 Integer.decode()
Integer.decode("0xFF") 可直接解析带 0x、0b、0 前缀的字符串,更灵活。
处理 long 类型或更大数值
超过 int 范围(±2³¹)时,改用 Long 对应方法:
- Long.toString(123456789012L, 16) → "1cbe991a4"
- Long.parseLong("1cbe991a4", 16) → 123456789012L
- 超长整数建议用 BigInteger:
new BigInteger("111100001111", 2).toString(16) → "f0f"
二进制位操作与格式化输出
若需固定位宽(如 8 位补零)、查看底层比特,可用:
- String.format("%8s", Integer.toBinaryString(5)).replace(' ', '0') → "00000101"
- Integer.toBinaryString(x | 0xff) 配合掩码确保正数显示(避免负数转出带符号位的长串)
- 位运算本身不涉及进制:>、& 等操作在 JVM 内部始终按补码进行,无需转换为字符串即可运算
不复杂但容易忽略细节。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










