JavaScript中Number类型通过toString(radix)实现整数进制转换(2~36),小数被截断;parseInt(str, radix)完成反向解析,需显式指定基数以防前缀识别错误;负数支持,小数和超大整数有精度限制。

JavaScript 中的 Number 类型本身没有“方法”,但它的原型(Number.prototype)提供了 toString(radix) 方法,这是实现进制切换最常用、最直接的方式;同时,parseInt(string, radix) 和 Number() 配合字符串前缀也能完成反向转换。
用 toString(radix) 将数字转成指定进制字符串
任何数字实例都可以调用 toString() 并传入进制基数(2~36),返回对应进制的字符串表示。注意:该方法只适用于**整数部分**,小数会被截断(不是四舍五入)。
-
(255).toString(16)→"ff"(十进制转十六进制) -
(10).toString(2)→"1010"(十进制转二进制) -
(100).toString(8)→"144"(十进制转八进制) -
(123).toString(36)→"3f"(支持最大 36 进制,用 0–9 + a–z)
用 parseInt(str, radix) 将字符串按指定进制解析为十进制数
parseInt 是全局函数,第一个参数是字符串,第二个是进制基数(必须是 2~36)。它会从字符串开头读取有效数字,遇到非法字符即停止。
-
parseInt("1010", 2)→10 -
parseInt("ff", 16)→255 -
parseInt("777", 8)→511 -
parseInt("1a", 12)→22(因为a在 12 进制中代表 10,1×12 + 10 = 22)
注意前缀与隐式进制识别
如果字符串带进制前缀(如 "0x"、"0o"、"0b"),parseInt 在省略 radix 时可能自动识别,但行为不一致,**强烈建议始终显式传入基数**:
立即学习“Java免费学习笔记(深入)”;
-
parseInt("0xff")→255(自动识别 16 进制) -
parseInt("0xff", 10)→0(按十进制解析,f非法,提前终止) -
parseInt("010")在非严格模式下可能被当作八进制(8),但在现代 JS(ES5+)中默认按十进制处理 —— 所以依赖前缀易出错,显式指定更安全
小数和负数的处理限制
toString(radix) 不支持小数点后的进制转换(如 (3.14).toString(2) 仍返回 "11");负数可正常转换,符号保留在结果前:
-
(-10).toString(2)→"-1010" - 若需浮点数进制转换(如二进制浮点表示),需手动拆解整数/小数部分,或借助第三方库(如
big-integer或自定义算法) - 进制转换本质是整数运算,JS 的
Number双精度浮点限制也会影响大整数精度(超过2^53后可能丢失精度)


















