Друзья, как я могу написать немного в буфере Node js, я могу писать байты, целые числа и т. д., Но не знаю, как писать биты. Является ли это возможным? если да, то как? Я должен записать боллеан в буфер 1 или 0 и прочитать его в API с помощью readBit (), поэтому мне нужно записать бит в буфер.





Вы не можете напрямую получить доступ к одному биту, но можете просто творить немного волшебства в JS.
Это позволит вам читать и записывать отдельные биты в буфер узла (Uint8Array).
var buffer = new Uint8Array(1);
function readBit(buffer, i, bit){
return (buffer[i] >> bit) % 2;
}
function setBit(buffer, i, bit, value){
if (value == 0){
buffer[i] &= ~(1 << bit);
}else{
buffer[i] |= (1 << bit);
}
}
// write bit 0 of buffer[0]
setBit(buffer, 0, 0, 1)
// write bit 1 of buffer[0]
setBit(buffer, 0, 1, 1)
setBit(buffer, 0, 1, 0)
// write bit 2 of buffer[0]
setBit(buffer, 0, 2, 0)
// write bit 3 of buffer[0]
setBit(buffer, 0, 3, 0)
setBit(buffer, 0, 3, 1)
// read back the bits
console.info(
readBit(buffer, 0, 0),
readBit(buffer, 0, 1),
readBit(buffer, 0, 2),
readBit(buffer, 0, 3)
);Привет, буфер узла - это Uint8Array с несколькими дополнительными методами: nodejs.org/api/buffer.html#buffer_buffers_and_typedarray Вы также можете создать простой Uint8Array из буфера, например: new Uint8Array(a.buffer, a.byteOffset, a.byteLength);, поэтому вы можете просто использовать код в буфере узла. Uint8Array использовался для этой демонстрации.
Код выше. Просто замените new Uint8Array(1); на Buffer.alloc(10). не существует метода прямого доступа к битам, вам нужно использовать такие методы, как setBit, или расширить прототип буфера с помощью чего-то вроде этого: Buffer.prototype.writeBit = function(i, bit, value){setBit(this, i, bit, value)}
Я понял суть, но еще один вопрос, как я могу применить это к буферу Node js? Например, let buffer = Buffer.alloc (10); buffer.writeUInt32BE (0); buffer.write (здесь бит); Это был мой вопрос :)