例如,如何从 0x01 获取 8,或从 0x0001 获取 16。
我想知道变量的位数。
var someNumber = 0x123456;
var len = whatToDoHere(someNumber);
console.log(len); // => 24 for example
最佳答案
以下是一些替代方案:
f1 = n => (Math.log2(n) & -8) + 8 // log2 (-Infinity & -8 = 0)
f2 = n => ((n >>= 8) && f2(n)) + 8 // recursion
f3 = n => n.toString(16).length + 1 << 2 & -8 // string length
for (n of [0, 0xff, 0x100, 0xffff, 0x10000, 0xffffff])
console.log( f1(n) + '\t' + f2(n) + '\t' + f3(n) + '\t0x' + n.toString(16) )
关于javascript - 如何从十六进制获取位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47682786/