Как писать и читать биты по одному в файле через NodeJS?

Я хочу создать бинарный файл, используя 0 а также 1 битовые значения, а затем я хочу прочитать их по одному.

Как я могу это сделать?

Для написания я попробовал:

var out = require("fs").createWriteStream("./out");
out.write(new Buffer("0"));   // this writes "0" as string
out.write(new Buffer(["0"])); // this creates something strange,
                              // but I'm not sure it's the needed thing

После того, как файл существует, я хочу перебрать все биты из этого файла:

require("fs").readFile("./out", function (err, buff) {
   // how to access here `0` and `1` values?
});

Какой правильный способ сделать это?

1 ответ

Решение

Буферы работают на уровне байтов. Как только вы получите доступ к определенному байту (например, buff[0]), это просто обычный номер javascript, так что вы можете делать любые битовые операции с этим номером (например, buff[0] & 0x0F).

Существуют вспомогательные функции для объектов Buffer, которые позволяют вам также писать различные виды чисел. Например: buff.writeUInt32BE(5, 0) запишет 32-разрядное целое число без знака 5 в режиме с прямым порядком байтов в позиции 0 в буфере. Чтобы прочитать 32-разрядное целое число без знака в режиме с прямым порядком байтов в позиции 0: buff.readUInt32BE(0),

Другие вопросы по тегам