我有一个整数形式的值,但我不知道它是Uint8还是Uint16或Uint32。现在我想得到它的字节大小,例如我想要这样的东西:
var a = 100; // 1100100
var b = 1000; // 1111101000
console.log (byteSizeOf(a)); // --> 2
console.log (byteSizeOf(b)); // --> 3
任何人都可以帮助我?
答案 0 :(得分:0)
您可以使用基本数学,如果那只是您需要调整的十进制数字:
Math.ceil(Math.log2(100)/4)
- > 2
Math.ceil(Math.log2(1000)/4)
- > 3
但你还必须处理0和1的空间情况:
function byteSizeOf( x ) {
return ( x < 2 )?1:Math.ceil(Math.log2(x)/4);
}
您可以将数字转换为二进制字符串,如下所示: how do I convert an integer to binary in javascript?
function dec2bin(dec){
return (dec >>> 0).toString(2);
}
然后你可以将结果转换为二进制数组:
"110011".split().map(function(x){return parseInt(x);})