Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как сохранить двоичный код в файл? (https://javascript.ru/forum/misc/84848-kak-sokhranit-dvoichnyjj-kod-v-fajjl.html)

webgraph 15.01.2023 19:47

Цитата:

Сообщение от voraa
Неужто это работает?

Ну ваще да, вроде)) ахха файл такой же как и при бинарном методе

webgraph 15.01.2023 19:51

Цитата:

Сообщение от voraa
Это не в 16-ричную переводит, а в массив байт

В бинарном варианте вы делали data = data.toString(2).

А здесь сделано data = data.toString(16).

voraa 15.01.2023 21:24

Цитата:

Сообщение от webgraph
Ну ваще да, вроде))

Не может это работать. у bigInt нет свойства length.
Попробуйте с нечетным количеством 16-ричных цифр и убедитесь, что 0 в начале не добавляется

let data = 384n; // 0x180
data = data.toString(16).padStart(data.length + data.length%2, '0');
console.log(data);

Цитата:

Сообщение от webgraph
В бинарном варианте вы делали data = data.toString(2).

А здесь сделано data = data.toString(16).

Результат одинаковый. Что быстрее - надо проверять. Может через 16-ричные будет быстрее

webgraph 15.01.2023 22:22

Цитата:

Сообщение от voraa
Не может это работать. у bigInt нет свойства length.

Так а как тогда? Типа сначала:

// сначала надо преобразовать в 16?

data = data.toString(16); 

// а уже потом работать с ней

data = data.padStart(data.length + data.length%2, '0');


Так получается?

voraa 15.01.2023 22:46

Цитата:

Сообщение от webgraph
Так получается?

Так получится.

webgraph 15.01.2023 23:18

Цитата:

Сообщение от voraa
И где хранить? В ОП или на диске?

voraa,
а этот вопрос к чему был?))

webgraph 24.01.2023 00:39

voraa,
а если для хранения в ОП?)

voraa 24.01.2023 07:35

Цитата:

Сообщение от webgraph
а если для хранения в ОП?)

Если только в typed Array.
Иначе памяти потребуется в разы больше. В памяти каждое число хранится как 8 байтовое вещественное (double64), а в строках по 2 байта на символ (utf-16)/

webgraph 24.01.2023 09:17

Цитата:

Сообщение от voraa (Сообщение 550238)
Если только в typed Array.
Иначе памяти потребуется в разы больше. В памяти каждое число хранится как 8 байтовое вещественное (double64), а в строках по 2 байта на символ (utf-16)/

Полагаю что двоичные данные только в typed array и могут храниться))

Изначально эта тема поднималась для записи именно на диск. Но сейчас интересен вопрос и про оперативную память.

Как считаете, насколько актуально принимать на сервер данные в формате JSON, конвертировать их в двоичные данные и записывать в память (map, set и т.д.) — в типизированные массивы?

Взять тот же Map — значение ключа может быть совершенно любым — мы можем создать new ArrayBuffer() и записать в него UUID участника.

Получается, что мы можем оптимизировать использование объёма оперативной памяти — уменьшить его как минимум 2 в раза.

Насколько верны данные размышления?)

voraa 24.01.2023 10:37

Мне трудно рассуждать абстрактно, не понимая всей задачи. Что и сколько передается, что где хранится, какие объемы?
Сделать то можно, что угодно.
Количество записей у вас только растет.
Как долго оно растет? Днями, месяцами, годами...?
Нужен все равно какой то предел количества записей при хранении в ОП. Она не резиновая.
Какие операции с ключами? Только сравнение на равенство?
Сравнение типизированных массивов не мгновенная операция. Она требует перебора - преобразование каждого элемента массива в обычное числовое значение и только тогда сравнивать. Сколько это займет по времени?


Часовой пояс GMT +3, время: 20:39.