2016-10-09 11 views
0

Мне нужно взять стандартный массив javascript, заполненный действительными 32-разрядными подписанными интергерами и преобразовать его в UInt8Array. Например, рассмотрим следующий стандартный яваскрипта массив:Самый эффективный способ преобразования не типизированного массива 32-разрядных целых чисел в UInt8Array?

[255, 3498766, -99] 

Я хочу, чтобы в результате UInt8Array содержать 32-разрядное представление этих чисел:

255  = [0x00, 0x00, 0x00, 0xFF] 
3498766 = [0x00, 0x35, 0x63, 0x0E] 
-99  = [0xFF, 0xFF, 0xFF, 0x9D] 

Таким образом, учитывая ввод [255, 3498766, -99], результат был бы:

[0x00, 0x00, 0x00, 0xFF, 0x00, 0x35, 0x63, 0x0E, 0xFF, 0xFF, 0xFF, 0x9D] 

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

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array – Craicerjack

ответ

2

a = [255, 3498766, -99] 
 
b = new Uint8Array(Int32Array.from(a).buffer) 
 
console.log(b)

Результат будет в платформенной порядке байт, т.е. LE на большинстве современных процессоров. Если вы действительно хотите использовать big-endian, как в вашем примере, вам понадобится дополнительная игра с DataView.getInt32 (см. here).

+0

LE в порядке. Пример был БЭ, потому что именно так я его визуализирую. –

 Смежные вопросы

  • Нет связанных вопросов^_^