JavaScript设置了四位

我有以下的模式:

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; } 

然后映射到一个新的,但我认为这是自我解释,这是废话。

您可以通过首先将整数与0xfffffff0与运算,然后将其与您的四位值进行或运算来设置整数的低四位。

 function setLowFour(n, lowFour) { return (n & 0xfffffff0) | (lowFour & 0xf); } 

请注意,JavaScript并没有真正的整数types。 按位运算强制值为整数,但实际上仍然以浮点数存储。

编辑 – 我认为它实际上也可以:-) setLowFour(1025, 12)返回setLowFour(1025, 12)unit testing怎么样?