我有一個整數形式的值,但我不知道它是Uint8還是Uint16或Uint32。現在我想要得到它的字節大小,例如我想要這樣的一些東西:在javascript中獲取值的字節大小
var a = 100; // 1100100
var b = 1000; // 1111101000
console.log (byteSizeOf(a)); // --> 2
console.log (byteSizeOf(b)); // --> 3
任何人都可以幫助我嗎?
我有一個整數形式的值,但我不知道它是Uint8還是Uint16或Uint32。現在我想要得到它的字節大小,例如我想要這樣的一些東西:在javascript中獲取值的字節大小
var a = 100; // 1100100
var b = 1000; // 1111101000
console.log (byteSizeOf(a)); // --> 2
console.log (byteSizeOf(b)); // --> 3
任何人都可以幫助我嗎?
您可以使用基本的數學,如果那是唯一的十進制數,你需要的大小:
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);})
你試過https://github.com/inexorabletash /文本編碼? – Majid
它的(有符號)int32,這是你現在可以依賴的「優化」,afaik。該規範將JS中的所有數字定義爲雙精度(64Bit浮點值) – Thomas