Класс 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 или реализовать этот интерфейс приводит к ошибке времени компиляции.
- Реализуемые типы
- Реализующие классы
Конструкторы
- 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