JavaScript往返于十六进制

问题描述 投票:0回答:2

我一直在用JavaScript体验一些有趣的事情,但我找不到原因,我很确定它是我自己,而不是JavaScript。通过执行(72058145430680163).toString(16)将数字72058145430680163转换为十六进制时,我获得了数字10000806191b260。如果在https://www.rapidtables.com/convert/number/decimal-to-hex.html使用计算器,则显示为白色,则得到10000806191B263,这是正确的数字。

此外,将我的结果转换回int时,我不返回原始整数。parseInt((72058145430680163).toString(16), 16)我获得72058145430680160。

我在做什么错?

javascript hex converters
2个回答
3
投票

您超出了JavaScript最大值的限制。改用BigInt。

BigInt("72058145430680163").toString('16'); // Returns 10000806191b263 as String

这就是整个往返行程

BigInt("0x" + BigInt("72058145430680163").toString('16')).toString() // Retuns 72058145430680163

有关BigInt的更多信息,请参见:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt


1
投票

您的数字太大,无法使用Javascript。因此,您看到的是一些溢出问题。您可以采取的措施来利用Javascript数据类型BigInt

因此,实际上,您可以执行以下操作:

BigInt("72058145430680163").toString(16);
© www.soinside.com 2019 - 2024. All rights reserved.