Вход/Регистрация
JavaScript. Подробное руководство, 6-е издание
вернуться

Флэнаган Дэвид

Шрифт:

var data; // Предположим, что данные в ArrayBuffer получены из сети

var view = DataView(data); // Создать представление буфера

var int = view.getlnt32(0); // 32-битное* целое со знаком с прямым порядком

// следования байтов, начиная с 0-го байта

int = view.getInt32(4,false); // Следующее 32-битное целое, также с прямым

// порядком следования байтов

int = view.getInt32(8,true) // Следующие 4 байта как целое со знаком

// и с обратным порядком следования байтов

view.setInt32(8,int,false); // Записать его обратно, в формате с прямым

// порядком следования байтов

Класс

DataView
определяет восемь методов get для каждого из восьми видов типизированных массивов. Они имеют такие имена, как
getlnt16, getUint32
и
getFloat64
. В первом аргументе они принимают смещение значения в байтах в буфере
ArrayBuffer
. Все эти методы чтения, кроме
getlnt8
и
getUint8,
принимают логическое значение во втором необязательном аргументе. Если второй аргумент отсутствует или имеет значение false, используется прямой порядок следования байтов. Если второй аргумент имеет значение true, используется обратный порядок следования байтов.

Класс

DataView
определяет восемь соответствующих методов
set
, которые записывают значения в буфер
ArrayBuffer
. В первом аргументе этим методам передается смещение начала значения. Во втором аргументе - записываемое значение. Все методы, кроме
setlnt8
и
setUint8,
принимают необязательный третий аргумент. Если аргумент отсутствует или имеет значение false, значение записывается в формате с прямым порядком следования байтов, когда первым следует старший байт. Если аргумент имеет значение true, значение записывается в формате с обратным порядком следования байтов, когда первым записывается младший байт.

22.6. Двоичные объекты

Двоичный объект (

Blob
) - это нетипизированная ссылка, или дескриптор, блока данных. Название «Blob» пришло из мира баз данных SQL, где оно расшифровывается как «Binary Large Object» (большой двоичный объект). В языке JavaScript двоичные объекты часто представляют двоичные данные, и они могут иметь большой размер, но это совсем необязательно: двоичный объект
Blob
может также представлять содержимое небольшого текстового файла. Двоичные объекты непрозрачны, т. е. являются своего рода черными ящиками: все, что можно с ними сделать, - это определить их размер в байтах, узнать MIME-тип и разбить на более мелкие двоичные объекты:

var blob = ... // Как получить двоичный объект, будет показано ниже

blob.size // Размер двоичного объекта в байтах

blob.type // МІМЕ-тип двоичного объекта или если неизвестен

var subblob = blob.slice(0,1024, "text/plain"); // Первый килобайт - как текст

var last = blob.slice(blob.size-1024, 1024); // Последний килобайт -

// как нетипизированные данные

Веб-броузеры могут сохранять двоичные объекты в памяти или на диске, и двоичные объекты могут представлять действительно огромные блоки данных (такие как видеофайлы), которые слишком велики, чтобы их можно было уместить в памяти, предварительно не разбив на более мелкие части с помощью метода slice. Поскольку двоичные объекты могут иметь огромный размер и для работы с ними может потребоваться доступ к диску, прикладные интерфейсы для работы с ними действуют асинхронно (имеются также синхронные версии для использования в фоновых потоках выполнения).

Сами по себе двоичные объекты не представляют особого интереса, но они служат важным механизмом обмена данными для некоторых прикладных интерфейсов в языке JavaScript, которые работают с двоичными данными. На рис. 22.2 показано, как можно обмениваться двоичными объектами во Всемирной паутине, читать и сохранять их в локальной файловой системе, в локальных базах данных и даже обмениваться ими с другими окнами и фоновыми потоками выполнения. Он также показывает, как можно получить содержимое двоичного объекта в виде текста, типизированного массива или URL-адреса.

Прежде чем приступать к работе с двоичным объектом, его необходимо получить. Сделать это можно множеством способов, одни из которых связаны с использованием уже знакомых вам прикладных интерфейсов, а другие - с прикладными интерфейсами, которые описываются ниже в этой главе:

• Двоичные объекты поддерживаются алгоритмом структурированного копирования (смотрите врезку «Структурированные копии» выше), а это означает, что их можно получить от другого окна или фонового потока выполнения вместе с событием «message» (разделы 22.3 и 22.4).

  • Читать дальше
  • 1
  • ...
  • 449
  • 450
  • 451
  • 452
  • 453
  • 454
  • 455
  • 456
  • 457
  • 458
  • 459
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: