没有here或here记载的bitLength()
方法...如何检查本机BigInt值的位数?
我正在通过一些内部信息寻找一种“直接方法” ...或者总是更快x.toString(2)
进行转换的任何方法。
这不是理想的方法,但是一种中间解决方法(似乎比toString()
更快)是使用this mathematical formula based on log2(x) ...适应BigInt。
This lib开发了特定的integerLogarithm(value, base)
来计算log2 ...并实现了bitLength()
方法(没有Math.floor()
哼...),但是很多依赖,这是一头大象...
答案 0 :(得分:-1)
这是一种怪诞(但很简单)的方法,将其转换为字符串:
num.toString(2).length;
const x = 324298349892398423892439832498423989842394839842398432243234243942738742378942379824739879842379437942379423792437742397942379824379842397824312n;
console.log(x.toString(2));
const bits = x.toString(2).length;
console.log(bits);