Character.forDigit()用于将0–radix−1范围内的单个数字转为对应进制的字符(如'0'–'9'、'a'–'z'),要求radix∈[2,36],非法参数返回'\u0000',不处理多位数或负数,安全调用需预先校验参数。

Character.forDigit 是 Java 中用于将数字(0–n−1 范围内)转换为对应进制下**单个字符表示**的静态方法,它不生成字符串、不处理多位数,只返回一个 char —— 也就是该数字在指定进制下的“数码符号”。
核心用法:只转一位数字,且必须合法
该方法签名是:public static char forDigit(int digit, int radix)
它要求:
- digit 必须在 0 到 radix−1 之间(含端点),否则返回 '\u0000'(空字符,即 0);
- radix 必须在 2 到 36 之间(含),超出则直接返回 '\u0000';
- 结果按惯例:0–9 对应 '0'–'9',10–35 对应 'a'–'z'(小写)。
常见进制示例(直观对照)
比如你想把数字 12 转成十六进制字符(即 'c'):
立即学习“Java免费学习笔记(深入)”;
-
Character.forDigit(12, 16)→'c' -
Character.forDigit(15, 16)→'f' -
Character.forDigit(10, 36)→'a'(因为 36 进制中 10 是 'a') -
Character.forDigit(35, 36)→'z'
注意:不能直接转多位数或负数
这个方法只处理「单个数码位」。想把整数 255 转成十六进制字符串 "ff"?不能只靠 forDigit,你需要自己拆位:
- 先取余(
255 % 16 == 15)→forDigit(15, 16)得 'f'; - 再整除(
255 / 16 == 15)→ 再次forDigit(15, 16)得 'f'; - 拼起来才是 "ff"(注意低位在后,需反转)。
负数、大于 radix−1 的 digit(如 forDigit(16, 16))都会返回 '\u0000',务必提前校验。
安全使用的建议
- 调用前检查
digit >= 0 && digit = 2 && radix ; - 若要转整个整数,优先用
Integer.toString(num, radix)(自动处理符号、多位、大小写); - 仅在需要手动控制某一位字符(如实现自定义进制编码、教学演示)时才用 forDigit。


















