Я использую WebGL для рендеринга двоичного кодированного файла сетки. Бинарный файл выписывается в формате big-endian (я могу проверить это, открыв файл в шестнадцатеричном редакторе или просмотрев сетевой трафик с помощью скрипача). Когда я пытаюсь прочитать двоичный ответ с помощью Float32Array или Int32Array, двоичный файл интерпретируется как little-endian, а мои значения неверны:
// Interpret first 32bits in buffer as an int
var wrongValue = new Int32Array(binaryArrayBuffer)[0];
Я не могу найти ссылки на стандартную спецификацию типизированных массивов в http://www.khronos.org/registry/typedarray/specs/latest/, поэтому мне интересно, что это за сделка? Должен ли я предполагать, что все двоичные данные должны быть малозначительными при чтении с использованием типизированных массивов?
Чтобы обойти проблему, я могу использовать объект DataView (обсуждается в предыдущей ссылке) и вызывать:
// Interpret first 32bits in buffer as an int
var correctValue = new DataView(binaryArrayBuffer).getInt32(0);
Функции DataView, такие как "getInt32", по умолчанию считывают значения по умолчанию.
(Примечание: я тестировал Google Chrome 15 и Firefox 8, и они оба ведут себя одинаково)