JavaScript将长十进制转换为十六进制并返回十六进制

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

序言

我一直在用JavaScript体验一些有趣的东西,但我找不到原因。我很确定它是我自己,而不是JavaScript。

问题

[将整数72058145430680163(18位数字)转换为十六进制时,我获得了十六进制表示形式10000806191b260

尽管使用Dec2Hex converter RapidTables,但我得到了10000806191b263。后一个是正确的数字-比使用Javascript的结果多3个。

而且,将我的结果转换为back to int时,它确实返回72058145430680160-比我的原始源整数小3。

用于转换的JavaScript

从dec转换为十六进制:

(72058145430680163).toString(16);

[从十六进制转换为dec(向后):

parseInt((72058145430680163).toString(16), 16)

我在做什么错?

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.