如何在JS中从Base36转换为Base10

时间:2017-10-07 12:58:34

标签: javascript base

我有一个base36号码00001CGUMZYCB99J

但是如果我尝试用JavaScript将其转换为基数为

parseInt("00001CGUMZYCB99J", 36);

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

但我怎么能在JS中做到这一点?

2 个答案:

答案 0 :(得分:0)

转换的结果超过Number.MAX_SAFE_INTEGER(即,基数为10的值太大而无法包含在JavaScript整数中),这意味着您需要某种任意精度库来进行转换,例如{ {3}}:

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

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

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

答案 1 :(得分:0)

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

如果您使用此库,则可以在以下基础之间进行转换:

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

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