JavaScript中将base字符串转为integer

58 阅读2分钟

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