2011-03-27 42 views
1

我想在一個大整數中找到一個字節的值。比如我想數如何在一個大整數中有效地找到一個字節的值

11973777 = 10110110 10110100 10010001 

發現

11973777[2] = 10110110 = 182 
11973777[1] = 10110100 = 180 
11973777[0] = 10010001 = 145 

而且這樣做效率(位運算)。我可以很容易地通過按位操作在數字中的任意位置找到一個位的值,但我不想僅僅爲了獲取該字節而進行8次,或者向左移位然後右移。這被標記爲JavaScript,因爲我在JavaScript中做它,但我想按位操作可以翻譯。提前感謝您提供任何幫助。

+1

難道是SHIFT右和AND不可接受? 'var num = 11973777; while(num> 0){result.push(num &0xff); num = num >> 8;}' – 2011-03-27 04:25:01

回答

2

在一定程度上,你必須位移位:

var num = 11973777; 
var lastByte = num & 0xFF; 
var midLowByte = (num >> 8) & 0xFF; 
var midHighByte = (num >> 16) & 0xFF; 
var highByte = (num >> 24) & 0xFF; 

但是你可以打包邏輯功能,使其更加方便,如:

window.getBytes = function(num) { 
    return [num & 0xFF, (num >> 8) & 0xFF, (num >> 16) & 0xFF, (num >> 24) & 0xFF]; 
}; 

var numBytes = getBytes(11973777); 
alert(numBytes[0] + "," + numBytes[1] + "," + numBytes[2] + "," + numBytes[3]); 
+0

謝謝你,這正是我需要的,我想到了這樣的事情,但無法讓它正常工作 – timanema 2011-03-27 18:54:48

相關問題