@toly19

Как преобразовать Uint8Array?

Есть данные в виде Uint8Array массива.
c2b9487bb0464f7d93e5e77b212daee8.PNG
Вот структура:
da447d234fc64df7add1a0a50c6e3bc7.PNG
Здесь, теоретически, должны быть данные, которые на картинке ниже:
904059146fb04d7ba24dce246c151274.PNG
Как преобразовать Uint8Array массив к тем данным, что в таблице???

P.S. выдрано из расширения webgl inspector
  • Вопрос задан
  • 783 просмотра
Решения вопроса 1
Ni55aN
@Ni55aN
В общем случае для преобразования Uint8Array в Float32Array можно выполнить в 2 строки

var uint8array = ...
var point1 = new Float32Array(uint8array.buffer);


где,к примеру, из 40 элементов (байтов) получится 10 элементов float (так как Float32 - занимает 32 бита == 4 байта)

for(var i=0;i<uint8array.length;i+=32){  // перебираем элементы каждой записи (строки из последней табл.)

var p1bytes = uint8array.subarray(i,i+12); // получаем данные для первой точки, 12 байт
var p1 = new Float32Array(p1bytes.buffer); // получили 3 элемента float
var p2bytes = uint8array.subarray(i+12,i+20);  // теперь следующие 8 байт
var p2 = new Float32Array(p2bytes.buffer);  // 2 элемента

// дальше идут массивы из элементов по 2 байта (short)

var p3bytes =  uint8array.subarray(i+20,i+24);  
var p3 = new Uint16Array(p1bytes.buffer);

// и т.д.
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы