最直接的方法是用 parseint(str, 16),它支持带或不带 0x 前缀的字符串、不区分大小写,对非法字符截断处理,而十六进制字面量如 0xff 在解析时已自动转为十进制数值。

JavaScript 中十六进制数字转十进制,最直接的方法是用 parseInt(),并指定进制为 16。
用 parseInt() 转换字符串形式的十六进制
如果十六进制数是字符串(如 "FF"、"0x1A"),parseInt(str, 16) 就能正确解析:
-
parseInt("FF", 16)→ 255 -
parseInt("0xFF", 16)→ 255(支持带0x前缀) -
parseInt("aBc", 16)→ 2748(不区分大小写) -
parseInt("100", 16)→ 256
注意:如果字符串开头有空格或非法字符(如 "FFG"),parseInt 会从左到右取有效部分,parseInt("FFG", 16) 仍返回 255;而纯非法串(如 "XYZ")返回 NaN。
十六进制字面量在代码中本身就是十进制值
JS 中以 0x 开头的字面量(如 0xFF、0x1a)在引擎解析时已自动转为对应的十进制数值,无需额外转换:
-
let n = 0xFF;→n的值就是 255(类型为 number) -
console.log(0x10 === 16);→ 输出 true
也就是说,你写的 0xFF 在运行时已经“是”十进制 255,只是写法是十六进制。
其他方式(不推荐日常使用)
虽然可以用 Number() 或一元加号尝试转换,但它们对十六进制字符串支持有限:
-
Number("0xFF")→ 255(仅当含0x前缀时有效) -
Number("FF")→ NaN(不支持无前缀的十六进制字符串) -
+"0xFF"→ 255,但+"FF"→ NaN
所以,统一用 parseInt(str, 16) 最稳妥、语义最清晰。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











