2

次のビットパターンを取得しました:

1000 0001 (129)

ここで、最後の 4 ビット (1 - 10、0x1 - 0xA) を設定したいと思います。

1000 0010

また

1000 1000

どうすればこれを達成できるのか、実際にはわかりません。最初の 4 ビットを読み取ることができました。

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

それから新しいものにマップしますが、これががらくたであることは自己説明だと思います。

4

1 に答える 1

6

整数の下位 4 ビットを設定するには、最初に整数を AND0xfffffff0演算し、次に 4 ビット値と OR 演算します。

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

JavaScript には実際には整数型がないことに注意してください。ビット単位の演算では、値が整数になるように強制されますが、実際には浮動小数点数として格納されます。

編集— それも実際に動作すると思います :-) setLowFour(1025, 12)1036 を返します。単体テストではどうですか?

于 2013-01-07T16:10:09.013 に答える