Kev*_*vin 2 javascript hex converters
我在使用 JavaScript 时遇到了一些有趣的事情,但我找不到原因。我很确定是我的问题,而不是 JavaScript。
当将整数72058145430680163(18位)转换为十六进制时,我得到了十六进制表示形式10000806191b260。
虽然使用Dec2Hex 转换器 RapidTables我得到了10000806191b263。后者是正确的数字 - 比我使用 Javascript 的结果多 3 个。
此外,当我的结果转换回 int时,它确实返回72058145430680160- 3 比我的原始源整数少。
从十进制转换为十六进制:
(72058145430680163).toString(16);
Run Code Online (Sandbox Code Playgroud)
从十六进制转换为十进制(向后):
parseInt((72058145430680163).toString(16), 16)
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
您超出了 JavaScript 的最大限制。请改用 BigInt。
BigInt("72058145430680163").toString('16'); // Returns 10000806191b263 as String
Run Code Online (Sandbox Code Playgroud)
这完成了整个往返
BigInt("0x" + BigInt("72058145430680163").toString('16')).toString() // Retuns 72058145430680163
Run Code Online (Sandbox Code Playgroud)
有关 BigInt 的更多信息,请访问: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt