Se o hardware suportar inteiros de 8 bits sem preenchimento, então std::uint8_tserá definido e poderá ser usado para essa finalidade.
enum class octet : std::uint8_t {};
// add bitwise ops similar to the operator overloads for std::byte
// alternatively, use std::uint8_t directly
No entanto, isso é basicamente inútil. Se unsigned charfor maior que 8 bits, std::uint8_tnão será definido porque nenhum tipo pode ser menor que um byte em C++.
Qualquer tipo de "octeto verdadeiro" não será portátil ou exigirá preenchimento. Se o preenchimento for aceitável, você pode defini-lo da seguinte maneira:
Além disso, como os comentaristas apontaram, hardware sem suporte para tipos de 8 bits é extremamente raro. A menos que você espere compilar seu código para processadores de sinal digital (DSPs) ou outro hardware incomum, apenas assuma bytes de 8 bits. Usar std::uint8_t, ou
Se o hardware suportar inteiros de 8 bits sem preenchimento, então
std::uint8_t
será definido e poderá ser usado para essa finalidade.No entanto, isso é basicamente inútil. Se
unsigned char
for maior que 8 bits,std::uint8_t
não será definido porque nenhum tipo pode ser menor que um byte em C++.Qualquer tipo de "octeto verdadeiro" não será portátil ou exigirá preenchimento. Se o preenchimento for aceitável, você pode defini-lo da seguinte maneira:
Além disso, como os comentaristas apontaram, hardware sem suporte para tipos de 8 bits é extremamente raro. A menos que você espere compilar seu código para processadores de sinal digital (DSPs) ou outro hardware incomum, apenas assuma bytes de 8 bits. Usar
std::uint8_t
, ou