byte
Тип byte хранит 8-битное беззнаковое целое от 0 до 255, занимает 1 байт памяти и удобен для работы с цветом, регистрами и данными от Serial.read().
Полная статья
Описание
Тип byte представляет собой 8-битное беззнаковое целое число. Он занимает ровно один байт памяти и может хранить значения от 0 до 255 — не больше и не меньше. Если присвоить переменной типа byte значение вне этого диапазона, произойдёт переполнение: число «обернётся» по модулю 256. Например, 256 превратится в 0, а 257 — в 1.
Этот тип удобен везде, где нужно работать с небольшими неотрицательными числами и при этом важно экономить оперативную память — особенно актуально для плат с ограниченным объёмом RAM, таких как Arduino Uno или Nano.
Синтаксис
byte var = val;
Параметры
var: имя переменной — произвольный идентификатор, по которому вы будете обращаться к значению в коде.val: начальное значение переменной — целое число от 0 до 255. Можно указать как десятичное, так и шестнадцатеричное или двоичное значение, например0xFFилиB11111111.
Где применяется
- Работа с цветом. Каждый канал RGB-цвета (красный, зелёный, синий) принимает значения 0–255, поэтому
byte— естественный выбор для хранения компонентов цвета. - Приём данных по Serial. Функция
Serial.read()возвращает один байт из буфера; удобно сохранять результат в переменную типаbyte. - Индексы и счётчики. Если счётчик цикла или индекс массива заведомо не превысит 255,
byteэкономит память по сравнению сint. - Работа с регистрами и битовыми масками. При манипуляциях с отдельными битами 8-битный тип точно соответствует размеру аппаратного регистра.
Практические замечания
byte— беззнаковый тип. Если вам нужны отрицательные числа, используйтеintилиint8_t.- При арифметических операциях с
byteрезультат может автоматически повышаться доint. Если важен именно 8-битный результат, явно приводите его обратно:(byte)(a + b). - Переполнение происходит молча — компилятор не предупредит, если значение выйдет за пределы 0–255. Проверяйте диапазон входных данных самостоятельно.
- На всех платах Arduino тип
byteзанимает ровно 1 байт, в отличие отint, который занимает 2 байта. В массивах большого размера разница ощутима. byteявляется псевдонимом дляuint8_t— стандартного типа из<stdint.h>. Оба варианта взаимозаменяемы в коде Arduino.