Java中Integer等包装类通过parseInt()解析任意进制字符串为十进制int,再用toString()或专用方法转回目标进制字符串,实现跨进制计算;需手动处理"0x""0b"等前缀,radix范围为2–36。

Java 中的 Integer 等包装类本身不直接支持进制间“计算”,但提供了完整的进制转换工具方法,配合基本类型运算即可完成不同进制数值的解析、格式化与算术操作。关键在于:先转成十进制 int(或 long)进行计算,再按需转回目标进制字符串。
用 Integer.parseInt() 解析任意进制字符串为十进制整数
这是进制转换的第一步——把非十进制字面量变成可计算的数字。
-
Integer.parseInt("1010", 2)→ 返回10(二进制转十进制) -
Integer.parseInt("FF", 16)→ 返回255(十六进制转十进制) -
Integer.parseInt("17", 8)→ 返回15(八进制转十进制)
注意:字符串必须符合对应进制规则(如二进制只含 0/1,十六进制可用 a–f 或 A–F),否则抛 NumberFormatException。前导空格和正负号(如 "-1A")也支持。
用 Integer.toString() 或 toBinaryString()/toOctalString()/toHexString() 格式化为指定进制字符串
计算完成后,把结果转成所需进制的字符串表示。
立即学习“Java免费学习笔记(深入)”;
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
Integer.toString(42, 2)→"101010"(十进制转二进制) -
Integer.toString(255, 16)→"ff"(默认小写,不带0x前缀) -
Integer.toBinaryString(12)→"1100"(快捷方法,固定进制,返回无符号形式) -
Integer.toHexString(-1)→"ffffffff"(负数按补码输出,长度取决于位宽)
⚠️ 注意:toString(int, radix) 的 radix 范围是 2–36;超出会抛 IllegalArgumentException。
跨进制加减乘除:先转 int,再算,再转回
Java 不支持直接对 "0xFF" + "0b1010" 这样的字符串做运算。必须统一到 int 类型。
- 例:计算十六进制
"1A"加二进制"110" - 写法:
int result = Integer.parseInt("1A", 16) + Integer.parseInt("110", 2);→ 得34 - 再转回十六进制:
Integer.toString(result, 16)→"22"
对于大数或需要更高精度的场景(如超 int 范围),可用 Long.parseLong(str, radix) 或 BigInteger(String val, int radix) 替代。
处理带前缀的字符串(如 "0x", "0b", "0")要手动截取
Java 的 parseInt 不识别标准前缀(0x, 0b, 0),需预处理:
-
"0xFF"→ 去掉"0x"后用parseInt(s.substring(2), 16) -
"0b1010"→ 去掉"0b"后用parseInt(s.substring(2), 2) -
"017"(八进制)→ 去掉开头"0"(但注意:Java 7+ 不再支持这种旧式八进制字面量,parseInt("017", 8)是合法的)
也可用正则或 switch 判断前缀自动选择进制,提升健壮性。

















