JavaScript 将长十进制转换为十六进制并返回
JavaScript convert long decimal to hex and back
序言
我在使用 JavaScript 时遇到了一些有趣的事情,但我找不到原因。
我很确定是我,而不是 JavaScript.
问题
当将整数72058145430680163
(18位)转换为十六进制时,我得到了十六进制表示10000806191b260
。
尽管使用 Dec2Hex converter RapidTables 我得到 10000806191b263
。后者是正确的数字 - 比我使用 Javascript.
的结果多 3
此外,在将我的结果 转换回 int 时,它 return 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。所以你看到的是一些溢出问题。你可以做的是利用 Javascript 数据类型 BigInt.
所以在实践中,你可以这样做:
BigInt("72058145430680163").toString(16);
序言
我在使用 JavaScript 时遇到了一些有趣的事情,但我找不到原因。 我很确定是我,而不是 JavaScript.
问题
当将整数72058145430680163
(18位)转换为十六进制时,我得到了十六进制表示10000806191b260
。
尽管使用 Dec2Hex converter RapidTables 我得到 10000806191b263
。后者是正确的数字 - 比我使用 Javascript.
此外,在将我的结果 转换回 int 时,它 return 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。所以你看到的是一些溢出问题。你可以做的是利用 Javascript 数据类型 BigInt.
所以在实践中,你可以这样做:
BigInt("72058145430680163").toString(16);