РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
79 of 723 menu

Тип ByteBuffer

Тип ByteBuffer обозначает непрерывный кусок памяти, измеренный в байтах. Сам по себе буфер не задаёт, как читать эти байты. На него смотрят через список, например asUint8List, или через ByteData.view. Несколько таких видов делят одни и те же байты: запись в одном виде видна в другом. Буфер берут у любого значения типа TypedData через свойство buffer. Тип объявлен в библиотеке dart:typed_data.

Синтаксис

ByteBuffer buffer = bytes.buffer; Uint8List list = buffer.asUint8List(); ByteData data = ByteData.view(buffer);

Пример

Давайте возьмём буфер у списка байтов и прочитаем из него второй байт:

import 'dart:typed_data'; void main() { Uint8List bytes = Uint8List.fromList([10, 20, 30, 40]); ByteBuffer buffer = bytes.buffer; print(buffer.lengthInBytes); print(buffer.asUint8List()[1]); }

Результат выполнения кода:

4 20

Пример

Давайте запишем байты через ByteData и прочитаем тот же буфер как список:

import 'dart:typed_data'; void main() { ByteData data = ByteData(4); data.setUint8(0, 7); data.setUint8(1, 8); Uint8List list = data.buffer.asUint8List(); print(list); }

Результат выполнения кода:

[7, 8, 0, 0]

Пример

Давайте посмотрим, сколько двухбайтовых элементов помещается в буфер из четырёх байт:

import 'dart:typed_data'; void main() { Uint8List bytes = Uint8List.fromList([1, 2, 3, 4]); ByteBuffer buffer = bytes.buffer; Int16List words = buffer.asInt16List(); print(words.length); }

Результат выполнения кода:

2

Смотрите также

  • тип ByteData,
    который читает байты как числа разной ширины
  • тип Uint8List,
    который хранит список байтов
  • тип TypedData,
    который описывает общие байтовые данные
  • тип Float64List,
    который хранит длинные дроби
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить