javascript中number类型本身是十进制数值,进制转换实为字符串与数字间的解析或格式化:parseint(string, radix)用于字符串转数字,tostring(radix)用于数字转字符串,需注意前缀识别与输入校验。

JavaScript中Number类型本身不区分进制,它始终是十进制数值;所谓“进制转换”,实质是字符串与数字之间的解析(string → number)或格式化(number → string)操作。
将字符串按指定进制转为十进制数字
使用 parseInt(string, radix) 是最常用方式。第二个参数 radix 指定原字符串的进制(2–36),返回对应的十进制数值。
- parseInt("1010", 2) → 10(二进制字符串转十进制)
- parseInt("ff", 16) → 255(十六进制字符串转十进制)
- parseInt("17", 8) → 15(八进制字符串转十进制)
注意:若字符串开头有 0x、0o 或 0b 前缀,即使指定了 radix,也建议保持一致;否则可能因前缀被忽略而产生意外结果(如 parseInt("0x10", 10) 会返回 0)。
将十进制数字转为其他进制的字符串
使用数字对象的 .toString(radix) 方法,radix 同样为 2–36 的整数。
- (255).toString(16) → "ff"
- (10).toString(2) → "1010"
- (15).toString(8) → "17"
注意:toString() 只能用于已知为数字的值;对 undefined、null 或非数字字符串调用会报错。可先用 Number() 或一元加号 + 安全转换。
特殊进制前缀的识别与处理
JavaScript原生支持带前缀的字面量(仅在代码中书写时有效),如:
- 0b1010 等价于 10(二进制)
- 0o17 等价于 15(八进制)
- 0xff 等价于 255(十六进制)
这些前缀在运行时会被引擎直接解析为十进制数值,不参与运行时转换逻辑。若从用户输入或API获取带前缀的字符串(如 "0xFF"),仍需用 parseInt(str, 0)(radix 设为 0 可自动识别前缀)或显式指定进制。
安全转换的实用建议
- 始终校验输入是否为有效字符串,避免 parseInt(undefined, 10) 返回 NaN
- 需要严格解析时,配合 isNaN() 或 Number.isInteger() 验证结果
- 批量处理时,可用 Number() 替代 parseInt()(但 Number 不支持 radix,只认十进制、十六进制前缀)
- 十六进制字符串转数字推荐用 parseInt(str, 16),比 Number("0x" + str) 更明确、容错更强
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











