Spec-Zone.ru › Dart 2

dart:typed_data

Класс ByteData

Последовательность байтов фиксированной длины с произвольным доступом, которая также обеспечивает произвольный и невыровненный доступ к целым числам фиксированной разрядности и числам с плавающей точкой, представленным этими байтами.

ByteData можно использовать для упаковки и распаковки данных из внешних источников (например, из сетей или файловых систем), а также для более эффективной обработки больших объемов числовых данных, чем это было бы возможно с обычными реализациями List. ByteData позволяет экономить память за счет отсутствия необходимости в заголовках объектов и время — за счет отсутствия необходимости копировать данные.

Если данные поступают в виде байтов, их можно преобразовать в ByteData, используя общий буфер.

Uint8List bytes = ...;
var blob = ByteData.sublistView(bytes);
if (blob.getUint32(0, Endian.little) == 0x04034b50) { // Zip file marker
  ...
}

Наконец, ByteData можно использовать для намеренной интерпретации байтов, представляющих один арифметический тип, как другого. Например, этот фрагмент кода определяет, какое 32-битное знаковое целое число представлено байтами 32-битного числа с плавающей точкой (оба значения хранятся в формате с порядком байтов от старшего к младшему):

var bdata = ByteData(8);
bdata.setFloat32(0, 3.04);
int huh = bdata.getInt32(0); // 0x40428f5c

Попытка класса расширить ByteData или реализовать этот интерфейс приводит к ошибке времени компиляции.

Реализуемые типы
  • TypedData
Реализующие классы
  • UnmodifiableByteDataView

Конструкторы

ByteData(int length)
фабричный
Создает ByteData указанной длины (в элементах), все байты которого изначально равны нулю.
ByteData.sublistView(TypedData data, [int start = 0, int? end])
фабричный
Создает представление ByteData для диапазона элементов data.
ByteData.view(ByteBuffer buffer, [int offsetInBytes = 0, int? length])
фабричный
Создает представление ByteData указанной области в buffer.

Свойства

buffer → ByteBuffer
только для чтения, унаследовано
Возвращает буфер байтов, связанный с этим объектом.
elementSizeInBytes → int
только для чтения, унаследовано
Возвращает количество байтов в представлении каждого элемента этого списка.
hashCode → int
только для чтения, унаследовано
Хеш-код этого объекта.
lengthInBytes → int
только для чтения, унаследовано
Возвращает длину этого представления в байтах.
offsetInBytes → int
только для чтения, унаследовано
Возвращает смещение этого представления в байтах относительно базового буфера байтов.
runtimeType → Type
только для чтения, унаследовано
Представление типа объекта во время выполнения.

Методы

getFloat32(int byteOffset, [Endian endian = Endian.big]) → double
Возвращает число с плавающей точкой, представленное четырьмя байтами по указанному byteOffset в этом объекте в формате двоичной плавающей точки одинарной точности IEEE 754 (binary32).
getFloat64(int byteOffset, [Endian endian = Endian.big]) → double
Возвращает число с плавающей точкой, представленное восемью байтами по указанному byteOffset в этом объекте в формате двоичной плавающей точки двойной точности IEEE 754 (binary64).
getInt16(int byteOffset, [Endian endian = Endian.big]) → int
Возвращает (возможно, отрицательное) целое число, представленное двумя байтами по указанному byteOffset в этом объекте в двоичном дополнительном коде.
getInt32(int byteOffset, [Endian endian = Endian.big]) → int
Возвращает (возможно, отрицательное) целое число, представленное четырьмя байтами по указанному byteOffset в этом объекте в двоичном дополнительном коде.
getInt64(int byteOffset, [Endian endian = Endian.big]) → int
Возвращает (возможно, отрицательное) целое число, представленное восемью байтами по указанному byteOffset в этом объекте в двоичном дополнительном коде.
getInt8(int byteOffset) → int
Возвращает (возможно, отрицательное) целое число, представленное байтом по указанному byteOffset в этом объекте в двоичном дополнительном коде.
getUint16(int byteOffset, [Endian endian = Endian.big]) → int
Возвращает положительное целое число, представленное двумя байтами, начиная с указанного byteOffset в этом объекте, в беззнаковой двоичной форме.
getUint32(int byteOffset, [Endian endian = Endian.big]) → int
Возвращает положительное целое число, представленное четырьмя байтами, начиная с указанного byteOffset в этом объекте, в беззнаковой двоичной форме.
getUint64(int byteOffset, [Endian endian = Endian.big]) → int
Возвращает положительное целое число, представленное восемью байтами, начиная с указанного byteOffset в этом объекте, в беззнаковой двоичной форме.
getUint8(int byteOffset) → int
Возвращает положительное целое число, представленное байтом по указанному byteOffset в этом объекте, в беззнаковой двоичной форме.
noSuchMethod(Invocation invocation) → dynamic
унаследовано
Вызывается при обращении к несуществующему методу или свойству.
setFloat32(int byteOffset, double value, [Endian endian = Endian.big]) → void
Устанавливает четыре байта, начиная с указанного byteOffset в этом объекте, в представление указанного value в формате двоичной плавающей точки одинарной точности IEEE 754 (binary32).
setFloat64(int byteOffset, double value, [Endian endian = Endian.big]) → void
Устанавливает восемь байтов, начиная с указанного byteOffset в этом объекте, в представление указанного value в формате двоичной плавающей точки двойной точности IEEE 754 (binary64).
setInt16(int byteOffset, int value, [Endian endian = Endian.big]) → void
Устанавливает два байта, начиная с указанного byteOffset в этом объекте, в двоичное представление указанного value в дополнительном коде; значение должно помещаться в два байта.
setInt32(int byteOffset, int value, [Endian endian = Endian.big]) → void
Устанавливает четыре байта, начиная с указанного byteOffset в этом объекте, в двоичное представление указанного value в дополнительном коде; значение должно помещаться в четыре байта.
setInt64(int byteOffset, int value, [Endian endian = Endian.big]) → void
Устанавливает восемь байтов, начиная с указанного byteOffset в этом объекте, в двоичное представление указанного value в дополнительном коде; значение должно помещаться в восемь байтов.
setInt8(int byteOffset, int value) → void
Устанавливает байт по указанному byteOffset в этом объекте в двоичное представление указанного value в дополнительном коде; значение должно помещаться в один байт.
setUint16(int byteOffset, int value, [Endian endian = Endian.big]) → void
Устанавливает два байта, начиная с указанного byteOffset в этом объекте, в беззнаковое двоичное представление указанного value; значение должно помещаться в два байта.
setUint32(int byteOffset, int value, [Endian endian = Endian.big]) → void
Устанавливает четыре байта, начиная с указанного byteOffset в этом объекте, в беззнаковое двоичное представление указанного value; значение должно помещаться в четыре байта.
setUint64(int byteOffset, int value, [Endian endian = Endian.big]) → void
Устанавливает восемь байтов, начиная с указанного byteOffset в этом объекте, в беззнаковое двоичное представление указанного value; значение должно помещаться в восемь байтов.
setUint8(int byteOffset, int value) → void
Устанавливает байт по указанному byteOffset в этом объекте в беззнаковое двоичное представление указанного value; значение должно помещаться в один байт.
toString() → String
унаследовано
Строковое представление этого объекта.

Операторы

operator ==(Object other) → bool
унаследовано
Оператор равенства.

© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-typed_data/ByteData-class.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API