JavaScript进制转换应直接使用原生方法parseInt()和.toString(radix),正确调用、避免误区:字符串→整数用parseInt(str,radix)或Number(),数字→字符串用num.toString(radix),十六进制与字节数组互转需校验、统一大小写、分组处理。

明确转换方向,选对原生方法
区分输入类型和目标格式,按需选用:
-
字符串 → 十进制整数:用
parseInt(str, radix)(推荐显式传入基数)或Number(str)(自动识别0b/0o/0x前缀) -
十进制数字 → 其他进制字符串:调用
(num).toString(radix),radix必须是 2–36 的整数 -
带前缀的字符串(如 "0xFF")→ 十进制:优先用
Number("0xFF"),它自动识别标准前缀;parseInt("0xFF", 16)也可靠,但省略基数会导致误解析
处理十六进制与字节数组互转(高频实用场景)
比如解析网络数据、颜色值或加密结果时,常需在 "aabbcc" 和 Uint8Array 间转换:
-
hex string → Uint8Array:
Uint8Array.from(str.match(/.{2}/g) || [], b => parseInt(b, 16)),建议先str.toLowerCase()统一大小写 -
Uint8Array → hex string:
Array.from(uint8arr, b => b.toString(16).padStart(2, "0")).join("") - 避免循环拼接字符串,用
join("")一次性合成,性能更优
规避常见低效/错误写法
这些做法看似“自定义算法”,实则冗余、易错、性能差:
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
- 手动实现“除基取余”转二进制——
(123).toString(2)一行搞定,且支持负数、边界值(0、Infinity),自己写的逻辑很难覆盖全 - 对同一字符串反复调用
parseInt而不缓存结果——转换结果不变,没必要重复计算 - 用正则或
split处理十六进制字符串却不校验长度(如奇数位)、非法字符——应先用/^[0-9a-fA-F]*$/检查,再统一转小写后分组 - 忽略负数处理:
(-42).toString(2)返回"-101010",符合预期,无需额外分支
封装时注重健壮性而非“炫技”
简单工具函数示例(含必要校验):
function hexToBytes(hex) {
const clean = hex.trim().toLowerCase();
if (!/^[0-9a-f]{2,}$/.test(clean) || clean.length % 2 !== 0)
throw new Error("Invalid hex string");
return Uint8Array.from(clean.match(/.{2}/g), b => parseInt(b, 16));
}
function bytesToHex(bytes) {
return Array.from(bytes, b => b.toString(16).padStart(2, "0")).join("");
}
不追求“通用任意进制”,聚焦实际需求(2/8/10/16),保持简洁清晰。

















