javascript进制转换核心是parseint()和tostring():parseint(str,radix)将字符串转十进制,如parseint("1010",2)得10;(num).tostring(radix)将十进制转字符串,如(255).tostring(16)得"ff";支持负数和前缀解析(推荐number()自动识别0b/0o/0x)。

JavaScript 提供了简单直接的方法进行常见进制间的转换,核心是 parseInt() 和 Number.prototype.toString() 两个方法,配合进制基数(radix)参数即可完成双向转换。
十进制 ↔ 二进制、八进制、十六进制
这是最常用场景:从字符串表示的非十进制数转为十进制整数,或把十进制数转为指定进制的字符串。
- 字符串 → 十进制:用 parseInt(str, radix),例如
parseInt("1010", 2)得到10;parseInt("FF", 16)得到255 - 十进制 → 字符串:调用 .toString(radix),例如
(255).toString(16)返回"ff";(10).toString(2)返回"1010" - 注意:.toString() 只适用于数字类型,对字符串需先转 Number 或 parseInt;负数也支持,如
(-10).toString(2)返回"-1010"
处理带前缀的字符串(如 "0b1010"、"0xFF")
JavaScript 原生支持带标准前缀的字面量,但 parseInt() 默认不自动识别前缀,需显式指定基数或使用通用解析方式。
- 推荐显式传入基数:比如
parseInt("0xFF", 16)正确返回255;而parseInt("0xFF")(无 radix)会按 10 进制解析,得0 - 若想自动识别前缀,可用 Number():例如
Number("0b1010")→10,Number("0o77")→63,Number("0xFF")→255 - 注意:Number() 对无效格式返回
NaN,建议配合isNaN()校验
十六进制字符串 ↔ 字节数组 / 二进制数据
在处理编码、加密或网络协议时,常需将如 "aabbcc" 这样的十六进制字符串转为 Uint8Array,或反过来。
- hex string → Uint8Array:
Uint8Array.from("aabbcc".match(/.{2}/g), byte => parseInt(byte, 16)) - Uint8Array → hex string:
Array.from(uint8arr, b => b.toString(16).padStart(2, "0")).join("") - 可封装成工具函数,注意大小写兼容性(
toLowerCase()预处理更稳妥)
常见陷阱与注意事项
进制转换看似简单,但容易因细节出错。
-
基数必须是 2–36 的整数,超出范围会抛错;
toString(1)或toString(37)不合法 -
parseInt 会忽略开头空格和后续非法字符,例如
parseInt("1010abc", 2)返回10(只解析到第一个非法字符为止) -
十六进制字母不区分大小写,但
.toString(16)默认输出小写;如需大写,可用.toUpperCase() - 浮点数不支持进制转换,
(10.5).toString(2)会报错;需先取整或自行实现小数部分转换逻辑
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











