двоичная строка Int8 с кодировкой base64 или hex в Int32Array - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть двоичная строка, которая должна проходить через веб-сокет ws (я не могу использовать websocket.io), и поэтому она является JSON.stringified.Например, var msg.data = data.toString('base64')

С другой стороны, я хочу, чтобы эти данные возвращались не в виде двоичного двоичного файла, а в виде массива 32-разрядных целых чисел.например, если двоичные данные поступают [0, 0, 0, 1], я хочу, чтобы [1] выходил.Каждый выходной элемент составляет 4 байта.

Если я просто беру двоичную строку напрямую, я могу new Int32Array(data) и я золотой;результат составляет 1/4 длины оригинала, и каждый 32-битный элемент состоит из 4 оригинальных байтовых элементов.

Но когда я его кодировал, затем декодировал с помощью var data = Buffer.from(msg.data, 'base64'), тогда new Int32Array(data) имеет ту же длину, что и оригинал, и каждый 32-байтовый элемент сделан из ОДНОГО из оригинальных 8-байтовых элементов.Int32Array.from(data) делает то же самое.

Я не нахожу никакого ответа при поиске, все, кажется, в порядке с байтовыми данными.

1 Ответ

0 голосов
/ 15 сентября 2018

.buffer

Я забыл .buffer.

new Int32Array(data.buffer) отлично работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...