如何在 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);
请记住,您需要继续使用该库,不能将其转换回正常数字,否则您将面临同样的问题。
我有一个 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);
请记住,您需要继续使用该库,不能将其转换回正常数字,否则您将面临同样的问题。