如何在 JS 中从 Base36 转换为 Base 10

How to convert from Base36 to Base10 in JS

我有一个 base36 数字 00001CGUMZYCB99J

但是如果我尝试使用

将JavaScript转换为以10为底
parseInt("00001CGUMZYCB99J", 36);

我得到了错误的结果,如 177207000002463650 或 177207000002463648。预期结果是 177207000002463655。我发现两个网站无论如何都能得到正确的结果:translatorscafe and dcode.

但是我如何在 JS 中执行此操作?

该转换的结果超过 Number.MAX_SAFE_INTEGER (i.e. the base-10 value is too large to fit in a JavaScript integer), which means you need some sort of arbitrary precision library to do the conversion, for instance biginteger:

const BigInteger = require('biginteger').BigInteger;

let value = BigInteger.parse('00001CGUMZYCB99J', 36);

console.log( value.toString() ) // 177207000002463655

JavaScript 将所有值存储在 double 中。因此,大数字将更改一些不太重要的数字。如果你想处理大数字,你必须使用像 this BigInteger one.

这样的特殊库

如果你使用这个库,你可以像这样在碱基之间进行转换:

BigInteger.parse("00001CGUMZYCB99J", 36);

请记住,您需要继续使用该库,不能将其转换回正常数字,否则您将面临同样的问题。