Класс ByteData
Определяет последовательность байтов фиксированной длины с произвольным доступом, которая также обеспечивает произвольный и невыровненный доступ к целым числам фиксированной ширины и числам с плавающей точкой, представленным этими байтами.
Этот класс может использоваться для упаковки и распаковки данных из внешних источников (таких как сети или файловые системы) и для обработки больших объемов числовых данных более эффективно, чем это возможно с обычными реализациями List. Использование этого класса может сэкономить память, исключая необходимость в заголовках объектов, и время, исключая необходимость в копировании данных.
Если данные поступают в виде байтов, их можно преобразовать в ByteData , используя один и тот же буфер.
Uint8List bytes = ...;
var blob = ByteData.sublistView(bytes);
if (blob.getUint32(0, Endian.little) == 0x04034b50) { // Zip file marker
...
} Наконец, ByteData может быть использован для преднамеренного повторного интерпретирования байтов, представляющих один арифметический тип, как другой. Например, этот фрагмент кода определяет, какое 32-битное знаковое целое число представлено байтами 32-битного числа с плавающей точкой (оба хранятся в формате big endian):
var bdata = ByteData(8); bdata.setFloat32(0, 3.04); int huh = bdata.getInt32(0); // 0x40428f5c
- Реализованные типы
- Реализации
Конструкторы
- ByteData(int length) factory
- Создает объект ByteData указанной длины (в элементах), все байты которого изначально равны нулю.
- ByteData.sublistView(TypedData data, [int start = 0, int? end]) factory
- Создает представление ByteData на диапазоне элементов объекта
data. - ByteData.view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) factory
- Создает представление 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 inherited - Вызывается, когда обращаются к несуществующему методу или свойству.
- setFloat32(
int byteOffset, double value, [Endian endian = Endian.big]) → void - Задает четыре байта, начиная с указанного
byteOffsetв этом объекте, представлению числа с плавающей точкой IEEE 754 одинарной точности (binary32) заданногоvalue. - setFloat64(
int byteOffset, double value, [Endian endian = Endian.big]) → void - Задает восемь байтов, начиная с указанного
byteOffsetв этом объекте, представлению числа с плавающей точкой IEEE 754 двойной точности (binary64) заданногоvalue. - 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 inherited - Строковое представление этого объекта.
Операторы
- operator ==(
Object other) → bool inherited - Оператор равенства.
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-typed_data/ByteData-class.html