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

标签 javascript hex converters

序言

我在使用 JavaScript 时遇到了一些有趣的事情,但我找不到原因。 我很确定是我的问题,而不是 JavaScript。

问题

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

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

此外,当我的结果转换回 int 时,它确实返回 72058145430680160 - 比我的原始源整数少 3。

用于转换的Javascript

从十进制转换为十六进制:

(72058145430680163).toString(16);

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

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

我做错了什么?

最佳答案

您超出了 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

关于JavaScript 将长十进制转换为十六进制并返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59165088/

相关文章:

javascript - 选中复选框时删除数组中的对象

javascript - 在jsp中使用ajax刷新一行onclick刷新按钮的列

java - InputTextArea 的 XPages Java 转换器

python - Pandas:时间转换器独立工作,但在读取 csv 文件时不工作

javascript - 无法将图像上传到 Firebase 存储

javascript - ngif 无法与 ViewData 一起使用

c++ - 转换字符 > 十六进制

colors - 在两种颜色之间进行插值的最有效方法是什么? (需要伪代码和按位运算)

bash - Bash 中的十六进制到十进制

c++ - C++ 中的十进制到二进制转换年份