我需要找到一种在JavaScript中将大数转换为十六进制字符串的方法。一开始,我尝试使用myBigNumber.toString(16)
,但如果myBigNumber
的值非常大(例如1298925419114529174706173),那么myBigNumber.toString(16)
将返回错误结果,这真是太棒了。我试着编写了自己的函数,如下所示:
function (integer) {
var result = '';
while (integer) {
result = (integer % 16).toString(16) + result;
integer = Math.floor(integer / 16);
}
}
然而,模16的大量数字都返回0(我认为这是导致toString
问题的根本原因。我还尝试用(integer - 16 * Math.floor(integer/16))
代替(integer % 16)
,但问题仍然存在。
我也看过 Big Integer JavaScript 库,但那是一个庞大的插件,而我只希望解决一个相对简单的问题。
有什么想法可以让我得到有效的结果吗?也许采用某种分治方法?我真的很困惑。
1298925419114529174706173 === 1298925419114529174706170
。 - Paul S.