Итак, у меня есть файл .bin, и я хочу его прочитать. Я пытался использовать .readFileSync("file.bin"), но я получаю странный console.info (когда я пытаюсь зарегистрировать определенный элемент), поскольку я понимаю, что получаю байты.
Может кто-нибудь сказать мне, как мне получить эти значения в массиве, например:
04 40 10 01 0a 1a 10 02 10 03 0d 02 0d 03 05 03 05 03 05 03 05 03 0f 32 0e 12 11 02 07 e6 0b 00
Код:
const fs = require('fs'); //file sysyem = fs
const decryptor = fs.readFileSync('./docs/decryptor.bin');
console.info(decryptor)
console.info(decryptor[0])
Итак, первый журнал, который я получаю:
<Buffer 04 40 10 01 0a 1a 10 02 10 03 0d 02 0d 03 05 03 05 03 05 03 05 03 0f 32 0e 12 11 02 07 e6 0b 00>
И для второго я получаю:
4
Ладно, не странно. Как я могу получить значения, о которых я упоминал ранее, например, в массив?
Это будет повторяющийся вопрос: stackoverflow.com/questions/8609289/…
Также хорошо задокументировано здесь: nodejs.org/api/buffer.html#buffer_buffers_and_typedarrays
Итак, у вас есть буфер, и вы можете получить к нему доступ как к массиву. Что именно вы пытаетесь сделать с этими данными? Мне интересно, можете ли вы просто выполнить это, напрямую обратившись к данным в буфере, используя синтаксис, подобный массиву.
Давайте распакуем это. Игра слов.
.readFileSync()
, как вы его используете, возвращает объект буфера с одним элементом для каждого байта в вашем файле. Это то, что вы видите из console.info(decryptor)
, всего буфера. console.info
отображает содержимое буферов в шестнадцатеричном формате. То есть десятичное значение 4
визуализируется 04
, а десятичное значение 10
визуализируется 0a
. Имейте в виду, что console.info выполняет отображение <Buffer 04 40 10 01 0a 1a ...
.
Затем, когда вы делаете let v = decryptor[0]
, вы берете первый элемент этого буфера и назначаете его v
. В вашем случае это старый добрый номер 4
. Итак, console.info(decryptor[0])
отображается как 4
.
Немного подробнее для вас: буферы nodejs — это экземпляры Uint8Arrays: массивы 8-битных чисел без знака. Вот почему вы получаете числа из поиска decryptor[0]
и других элементов. Прочитай это. Преобразование бинарного буфера NodeJS в JavaScript ArrayBuffer
Можешь уточнить, почему ты считаешь это странным? (он работает как положено.) Чего вы ожидали?