Тип ByteData
Тип ByteData - доступ к последовательности байтов
с чтением и записью чисел заданной ширины.
По смещению в байтах можно прочитать один байт,
два, четыре или восемь. Для числа шире одного байта
указывают порядок: Endian.big или
Endian.little. Если порядок не указан,
берётся big-endian, от старшего байта к младшему.
Один и тот же байт можно прочитать как знаковое
или как беззнаковое число. Тип объявлен
в библиотеке dart:typed_data.
Синтаксис
ByteData(int length)
ByteData.view(ByteBuffer buffer, [int offsetInBytes = 0, int? length])
Пример
Давайте запишем байт и двухбайтовое число, а затем прочитаем их обратно:
import 'dart:typed_data';
void main()
{
ByteData data = ByteData(4);
data.setUint8(0, 10);
data.setUint16(2, 1000);
print(data.getUint8(0));
print(data.getUint16(2));
print(data.lengthInBytes);
}
Результат выполнения кода:
10
1000
4
Пример
Давайте запишем число 1 двумя байтами
в порядке little-endian и посмотрим оба байта:
import 'dart:typed_data';
void main()
{
ByteData data = ByteData(2);
data.setUint16(0, 1, Endian.little);
print(data.getUint8(0));
print(data.getUint8(1));
}
Результат выполнения кода:
1
0
Пример
Давайте запишем байт со знаком -1
и прочитаем его как беззнаковый и как знаковый:
import 'dart:typed_data';
void main()
{
ByteData data = ByteData(1);
data.setInt8(0, -1);
print(data.getUint8(0));
print(data.getInt8(0));
}
Результат выполнения кода:
255
-1
Смотрите также
-
тип
ByteBuffer,
который хранит общий кусок памяти -
тип
Uint8List,
который хранит список байтов -
тип
TypedData,
который описывает общие байтовые данные -
тип
Int16List,
который хранит знаковые 16 бит