Типизированные массивы Javascript и порядок байтов

Я использую WebGL для рендеринга файла сетки с двоичным кодированием. Двоичный файл записывается в формате big-endian (я могу проверить это, открыв файл в шестнадцатеричном редакторе или просмотрев сетевой трафик с помощью скрипта). Когда я пытаюсь прочитать двоичный ответ с помощью Float32Array или Int32Array, двоичный интерпретируется как прямой порядок байтов, и мои значения неверны:

// Interpret first 32bits in buffer as an int
var wrongValue = new Int32Array(binaryArrayBuffer)[0];

Я не могу найти никаких ссылок на порядок байтов по умолчанию для типизированных массивов в http://www.khronos.org/registry/typedarray/specs/latest / , поэтому мне интересно, в чем дело? Должен ли я предполагать, что все двоичные данные должны иметь прямой порядок байтов при чтении с использованием типизированных массивов?

Чтобы обойти проблему, я могу использовать объект DataView (обсужденный ранее link) и вызовите:

// Interpret first 32bits in buffer as an int
var correctValue = new DataView(binaryArrayBuffer).getInt32(0);

Функции DataView, такие как "getInt32", по умолчанию считывают значения с прямым порядком байтов.

(Примечание: я тестировал использование Go взгляните на Chrome 15 и Firefox 8, и они оба ведут себя одинаково)

58
задан Bob 23 October 2011 в 22:37
поделиться