2014-07-02 46 views
0

我試圖從Javascript中的十六進制數字中提取最後32位。爲什麼在JavaScript中使用Masking準確無法獲得值?

var hex = 0x6C469F301DBBC30; 
var last32bit = (hex & 0xFFFFFFFF).toString(16); 
log(last32bit); //gives 1dbbc40 

結果是1DBBC40。難道這不應該是1DBBC30? 另外如何在1DBBC40之前保留0

+1

你可以試試'(「00000000」+ last32bit).slice(-8)'來保存 – mplungjan

+0

謝謝。我想這是一個粗略的解決方法。但它會服務於我的目的。該過濾器仍然不準確。 –

+1

這個數字對於64位尾數來說太大了。 – Pointy

回答

3

ECMA standard說:

號碼類型具有完全相同18437736874454810627(即,2 64 -2 3) 值

你的數目過大而無法完全由數字表示。如果你想準確地表示大數字,你應該尋找一個大號碼庫。也許one of these libraries將滿足您的需求。

+0

所以我猜沒有解決方法? –

+0

@SamikSengupta不支持原生JavaScript數字設施。 – Pointy

相關問題