如何有效地查找大整数中的字节值

时间:2011-03-27 04:18:33

标签: javascript bit-manipulation

我想在大整数中找到一个字节的值。例如数字

11973777 = 10110110 10110100 10010001

我想找到那个

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

并且有效地执行(按位操作)。我可以通过按位运算在数字的任何位置轻松找到一个位的值,但我不想这样做8次只是为了得到字节,或者向左移位然后向右移位。这被标记为javascript,因为我在javascript中这样做,但我想可以翻译按位操作。提前感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分: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]);