JavaScript中将base字符串转为integer
在 JavaScript 中,将特定进制的字符串(如二进制、八进制、十六进制等)转换为十进制整数,可以通过 parseInt(string, base) 实现。以下是具体方法及注意事项:
1. 使用 parseInt(string, base)
- 功能:将字符串按指定进制解析为整数。
- 参数:
string:要解析的字符串。base:进制基数(2 到 36 之间的整数)。
- 返回值:十进制整数。若字符串不合法或进制无效,返回
NaN。
示例
// 二进制 "1010" → 十进制 10
console.log(parseInt("1010", 2)); // 输出: 10
// 十六进制 "1A" → 十进制 26
console.log(parseInt("1A", 16)); // 输出: 26
// 八进制 "17" → 十进制 15
console.log(parseInt("17", 8)); // 输出: 15
2. 处理非法字符
如果字符串包含非法字符(如十六进制的 "G"),parseInt 会忽略非法字符后的内容:
console.log(parseInt("12G", 16)); // 解析到 "12" → 输出: 18(1*16 + 2)
3. 进制范围限制
base 参数必须是 2 到 36 之间的整数,否则返回 NaN:
console.log(parseInt("10", 1)); // 输出: NaN(base < 2)
console.log(parseInt("10", 37)); // 输出: NaN(base > 36)
4. 自动进制推断
如果省略 base 参数,parseInt 会根据字符串前缀推断进制:
0x开头 → 按十六进制解析。0开头 → 按八进制解析(ES5 之后严格模式下无效)。- 其他情况 → 按十进制解析。
示例
console.log(parseInt("0x1A")); // 输出: 26(十六进制)
console.log(parseInt("017")); // 输出: 15(旧版八进制解析,ES6 后严格模式下报错)
console.log(parseInt("123")); // 输出: 123(十进制)
5. 自定义进制转换(Base 2-36)
若需处理非标准进制(如 Base32、Base58),需自行实现或使用第三方库:
// 示例:Base36 字符串转十进制
console.log(parseInt("Z", 36)); // 输出: 35(0-9 + A-Z)
6. 错误处理
通过 isNaN 检查是否解析成功:
const value = parseInt("XYZ", 10);
if (isNaN(value)) {
console.log("解析失败");
} else {
console.log(value);
}
总结
| 场景 | 方法 | 示例 |
|---|---|---|
| 二进制 → 十进制 | parseInt(str, 2) | parseInt("1010", 2) → 10 |
| 十六进制 → 十进制 | parseInt(str, 16) | parseInt("1A", 16) → 26 |
| 八进制 → 十进制 | parseInt(str, 8) | parseInt("17", 8) → 15 |
| 自动推断进制 | parseInt(str) | parseInt("0x1A") → 26 |
| 错误处理 | isNaN() | isNaN(parseInt("XYZ")) → true |
注意事项
- 始终明确指定
base参数,避免自动推断导致的意外结果。 - 处理非法字符时需额外验证输入合法性。
- 超出
2-36进制的需求需使用自定义逻辑或第三方库。
更多vue相关插件及后台管理模板可访问vue admin reference,代码详情请访问github