2016-10-09 22 views
0

我有一個整數形式的值,但我不知道它是Uint8還是Uint16或Uint32。現在我想要得到它的字節大小,例如我想要這樣的一些東西:在javascript中獲取值的字節大小

var a = 100;  // 1100100 
var b = 1000; // 1111101000 
console.log (byteSizeOf(a)); // --> 2 
console.log (byteSizeOf(b)); // --> 3 

任何人都可以幫助我嗎?

+0

你試過https://github.com/inexorabletash /文本編碼? – Majid

+0

它的(有符號)int32,這是你現在可以依賴的「優化」,afaik。該規範將JS中的所有數字定義爲雙精度(64Bit浮點值) – Thomas

回答

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);}) 
+0

坦克供您回答,但是是否有可能獲得其二進制數據?例如100獲得'1100100'。 – pooyan

+0

我的意思是我們發送100個函數並返回1100100.並且還沒有字符串(它應該是數字) – pooyan

+0

一個數字? js沒有二進制數,所以1100100將被解釋爲十進制。這意味着它必須表示爲字符串。 –

相關問題