Читать файлы .bin NodeJS

Итак, у меня есть файл .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

Можешь уточнить, почему ты считаешь это странным? (он работает как положено.) Чего вы ожидали?

Wyck 09.12.2020 19:23

Ладно, не странно. Как я могу получить значения, о которых я упоминал ранее, например, в массив?

gfiselv 09.12.2020 19:25

Это будет повторяющийся вопрос: stackoverflow.com/questions/8609289/…

Wyck 09.12.2020 19:25

Также хорошо задокументировано здесь: nodejs.org/api/buffer.html#buffer_buffers_and_typedarrays

Wyck 09.12.2020 19:27

Итак, у вас есть буфер, и вы можете получить к нему доступ как к массиву. Что именно вы пытаетесь сделать с этими данными? Мне интересно, можете ли вы просто выполнить это, напрямую обратившись к данным в буфере, используя синтаксис, подобный массиву.

jfriend00 09.12.2020 19:50
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
539
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Давайте распакуем это. Игра слов.

.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

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