JavaScript. Подробное руководство, 6-е издание, стр. 388
<b>// Если целое число 0x00000001 располагается в памяти в виде</b><b>// последовательности байтов 01 00 00 00, следовательно, сценарий выполняется</b><b>// на платформе с обратным порядком следования байтов. На платформе с прямым</b><b>// порядком следования байтов мы получим байты 00 00 00 01.</b><b>var little_endian = new Int8Array(new Int32Array([1]).buffer)[0] === 1;</b>В настоящее время наибольшее распространение получили процессорные архитектуры с обратным порядком следования байтов. Однако многие сетевые протоколы и некоторые двоичные форматы файлов требуют, чтобы байты следовали в прямом порядке. В разделе 22.6 вы узнаете, как использовать объекты
<b>ArrayBuffer</b><b>Int8Array</b><b>Uint8Array</b><b>DataView</b><b>ArrayBuffer</b><b>var data; // Предположим, что данные в ArrayBuffer получены из сети</b><b>var view = DataView(data); // Создать представление буфера</b><b>var int = view.getlnt32(0); // 32-битное* целое со знаком с прямым порядком</b><b> // следования байтов, начиная с 0-го байта</b><b>int = view.getInt32(4,false); // Следующее 32-битное целое, также с прямым</b><b> // порядком следования байтов</b><b>int = view.getInt32(8,true) // Следующие 4 байта как целое со знаком</b><b> // и с обратным порядком следования байтов</b><b>view.setInt32(8,int,false); // Записать его обратно, в формате с прямым</b><b> // порядком следования байтов</b>Класс
<b>DataView</b><b>getlnt16(), getUint32()</b><b>getFloat64()</b><b>ArrayBuffer</b><b>getlnt8()</b><b>getUint8(),</b>Класс
<b>DataView</b><b>set</b><b>ArrayBuffer</b><b>setlnt8()</b><b>setUint8(),</b>22.6. Двоичные объекты
Двоичный объект (
<b>Blob</b><b>Blob</b><b>var blob = ... // Как получить двоичный объект, будет показано ниже</b><b>blob.size // Размер двоичного объекта в байтах</b><b>blob.type // МІМЕ-тип двоичного объекта или если неизвестен</b><b>var subblob = blob.slice(0,1024, "text/plain"); // Первый килобайт - как текст</b><b>var last = blob.slice(blob.size-1024, 1024); // Последний килобайт -</b><b> // как нетипизированные данные</b>Веб-броузеры могут сохранять двоичные объекты в памяти или на диске, и двоичные объекты могут представлять действительно огромные блоки данных (такие как видеофайлы), которые слишком велики, чтобы их можно было уместить в памяти, предварительно не разбив на более мелкие части с помощью метода slice(). Поскольку двоичные объекты могут иметь огромный размер и для работы с ними может потребоваться доступ к диску, прикладные интерфейсы для работы с ними действуют асинхронно (имеются также синхронные версии для использования в фоновых потоках выполнения).
Сами по себе двоичные объекты не представляют особого интереса, но они служат важным механизмом обмена данными для некоторых прикладных интерфейсов в языке JavaScript, которые работают с двоичными данными. На рис. 22.2 показано, как можно обмениваться двоичными объектами во Всемирной паутине, читать и сохранять их в локальной файловой системе, в локальных базах данных и даже обмениваться ими с другими окнами и фоновыми потоками выполнения. Он также показывает, как можно получить содержимое двоичного объекта в виде текста, типизированного массива или URL-адреса.