广树
2024-11-20 08:18
@石樱灯笼:这应该是受众的年龄层的问题吧
作者:广树时间:2018-07-23 14:39:53分类:JavaScript/jQuery/Vue
因为JS的精度缺失导致大整数在十六进制转换上也会有精度确实。
例如:
Number('999999999999999999').toString(16)
"de0b6b3a7640000"
0xde0b6b3a7640000 = 1000000000000000000
这个时候可以先用以前文章提到过的大整数字符串运算来得出数字字符串,然后再通过下面的方法来转换成十六进制字符串。
function dec2hex(str){ var dec = str.toString().split(''), sum = [], hex = [], i, s while(dec.length){ s = 1 * dec.shift() for(i = 0; s || i < sum.length; i++){ s += (sum[i] || 0) * 10 sum[i] = s % 16 s = (s - sum[i]) / 16 } } while(sum.length){ hex.push(sum.pop().toString(16)) } return hex.join('') }
例子:
dec2hex('999999999999999999')
"de0b6b3a763ffff"
代码转自:stackoverflow
相关文章:《预防JS精度丢失之字符串除以n个0 与 整数数字用字符串相加 的解决方案》、《JS大整数(字符串)相乘与字符串乘以n个0 | 预防JS精度丢失 | JS字符串乘法》