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

Класс byte

Класс byte был добавлен в стандарт C++17 и представляет собой отдельный тип данных, предназначенный для хранения одного байта информации. В отличие от char, который также занимает один байт, byte не является символьным типом и не предназначен для хранения символов. Он используется для работы с сырыми бинарными данными, где важно само значение байта, а не его символьная интерпретация. Объявление std::byte находится в заголовочном файле <cstddef>.

Класс byte является enum class с базовым типом unsigned char. Это означает, что значения byte не могут быть неявно преобразованы к целочисленным типам и наоборот. Для выполнения арифметических и битовых операций необходимо явно преобразовывать значения с помощью std::to_integer. При этом для byte определены побитовые операторы &, |, ^, ~, а также операторы сдвига << и >>.

Синтаксис

std::byte value{0}; std::byte value = std::byte{0};

Для создания значения типа byte используется списочная инициализация с целочисленным литералом в диапазоне от 0 до 255.

Пример

Давайте создадим несколько значений типа byte и выведем их числовые значения с помощью std::to_integer:

#include <iostream> #include <cstddef> using namespace std; int main() { byte a{10}; byte b{20}; cout << to_integer<int>(a) << endl; cout << to_integer<int>(b) << endl; return 0; }

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

10 20

Пример

Давайте выполним побитовые операции над значениями типа byte. Операторы &, | и ^ работают напрямую с byte без явного преобразования:

#include <iostream> #include <cstddef> using namespace std; int main() { byte a{0b1100}; byte b{0b1010}; byte res_and = a & b; byte res_or = a | b; byte res_xor = a ^ b; cout << to_integer<int>(res_and) << endl; cout << to_integer<int>(res_or) << endl; cout << to_integer<int>(res_xor) << endl; return 0; }

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

8 14 6

Пример

Давайте поработаем с массивом значений типа byte и выведем каждый элемент, преобразовав его к int:

#include <iostream> #include <cstddef> using namespace std; int main() { byte arr[] = {byte{1}, byte{2}, byte{3}, byte{4}, byte{5}}; for (byte b : arr) { cout << to_integer<int>(b) << " "; } cout << endl; return 0; }

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

1 2 3 4 5

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

  • тип char,
    который хранит один символ
  • тип unsigned,
    который задает беззнаковый целочисленный тип
  • тип size_t,
    который используется для размеров и индексов
  • тип any,
    который может хранить значение любого типа
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить