最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Java中 BigInteger 怎么实现基数转换 如 10 进制转 36 进制
时间:2026-07-14 09:36:46 编辑:袖梨 来源:一聚教程网
BigInteger通过构造器BigInteger(String val, int radix)支持2–36进制字符串转十进制大整数,再通过toString(int radix)将十进制BigInteger转为指定进制小写字符串,天然支持负数,超出36进制需手动实现。
BigInteger 本身不直接提供像 toString(radix) 这样的实例方法(那是 Integer、Long 等基本类型包装类的),但它提供了静态方法 BigInteger.valueOf(long) 和构造器支持字符串解析,更重要的是——它有一个非常关键的构造器和一个配套的 toString() 方法,能直接完成任意进制(2–36)的转换。
用 BigInteger(String val, int radix) 解析任意进制字符串
这是“其他进制 → 十进制 BigInteger”的入口。比如把 36 进制字符串 "Z" 或 "100" 转成十进制大整数:
- 构造器
new BigInteger("Z", 36)→ 值为 35(因为 Z 是 36 进制中表示 35) -
new BigInteger("100", 36)→ 值为36² = 1296 - radix 必须在 2–36 之间,超出会抛
NumberFormatException
用 toString(int radix) 输出指定进制字符串
这是“十进制 BigInteger → 其他进制字符串”的核心方法。它返回小写字母 a–z 表示 10–35,符合标准惯例:
-
BigInteger.valueOf(1296).toString(36)→ 返回"100" -
BigInteger.valueOf(35).toString(36)→ 返回"z" - 注意:结果是小写;如需大写,可调用
.toUpperCase()
处理负数和边界情况
BigInteger 的进制转换天然支持负数:
立即学习“Java免费学习笔记(深入)”;
-
new BigInteger("-abc", 16)合法,解析为负的十进制值 -
BigInteger.valueOf(-1000).toString(36)返回"-rs"(小写带负号) - 空字符串、前导空格、无效字符(如 radix=36 时出现 'g')会抛异常
自定义更高基数?需手动实现
Java 内置仅支持 2–36(因字母只有 26 个 + 数字 10 个)。若需 62 进制(0–9 + a–z + A–Z),就得自己写转换逻辑:
- 用
divideAndRemainder()反复取余,查表映射余数到字符 - 注意顺序:余数是低位,需逆序拼接
- 对零值单独处理,避免空结果
相关文章
- 以下哪种职业的执业人员具有审计签字权 蚂蚁新村今日答案2026.1.14 07-14
- 蚂蚁新村今日答案1.14 07-14
- 蚂蚁新村2026年1月14日答案最新 07-14
- 蚂蚁庄园小鸡答题今日答案2026年1月15日 07-14
- 蚂蚁庄园今日最新答案1.15 07-14
- 蚂蚁庄园今日答案最新2026.1.15 07-14