我得到了以下位模式:
1000 0001 (129)
我现在想要设置最后四位(1 - 10,0x1 - 0xA):
1000 0010
或
1000 1000
我实际上不知道如何才能做到这一点。我能读出前四位:
var buff = new Buffer(1);
buff[0] = 129;
var isFirstBitSet = (buff[0] & 128) == 128;
var isSecondBitSet = (buff[0] & 64) == 40;
var isThirdBitSet = (buff[0] & 32) === 32;
var isFourthBitSet = (buff[0] & 16) === 16;
var buff[0] = 0xA;
if (isFirstBitSet) {
buff[0] = buff[0] & 128;
}
然后映射一个新的,但我认为这是自我解释,这是废话。
答案 0 :(得分:5)
您可以先设置整数的低四位,然后将整数与0xfffffff0
进行对比,然后将其与四位值进行或运算。
function setLowFour(n, lowFour) {
return (n & 0xfffffff0) | (lowFour & 0xf);
}
请注意,JavaScript实际上没有整数类型。按位运算强制值为整数,但它们实际上仍然存储为浮点数。
编辑 - 我认为它实际上也有效:-) setLowFour(1025, 12)
返回1036.如何进行单元测试?