std::byteswap
De cppreference.com
Definido en el archivo de encabezado <bit>
|
||
template< class T > constexpr T byteswap( T n ) noexcept; |
(desde C++23) | |
Invierte los bytes en un valor entero dado n
.
std::byteswap
participa en la resolución de sobrecargas solo si T
satisface integral
, es decir, T
es un tipo entero. El programa está mal formado si T
tiene bits de relleno.
Contenido |
[editar] Parámetros
n | - | Valor entero |
[editar] Valor de retorno
Un valor entero de tipo T
cuya representación de objeto consta de los bytes de esa n
en orden inverso.
[editar] Notas
Esta función es útil para procesar datos de distinta endianness (extremidad).
[editar] Ejemplo
Ejecuta este código
#include <bit> #include <cstdint> #include <concepts> #include <iostream> #include <iomanip> template <std::integral T> void volcar(T v, char term = '\n') { std::cout << std::hex << std::uppercase << std::setfill('0') << std::setw(sizeof(T) * 2) << v << " : "; for (std::size_t i{}; i != sizeof(T); ++i, v >>= 8) { std::cout << std::setw(2) << static_cast<unsigned>(T(0xFF) & v) << ' '; } std::cout << std::dec << term; } int main() { static_assert(std::byteswap('a') == 'a'); std::cout << "byteswap para U16:\n"; constexpr auto x = std::uint16_t(0xCAFE); volcar(x); volcar(std::byteswap(x)); std::cout << "\nbyteswap para U32:\n"; constexpr auto y = std::uint32_t(0xDEADBEEFu); volcar(y); volcar(std::byteswap(y)); std::cout << "\nbyteswap para U64:\n"; constexpr auto z = std::uint64_t{0x0123456789ABCDEFull}; volcar(z); volcar(std::byteswap(z)); }
Posible salida:
byteswap para U16: CAFE : FE CA FECA : CA FE byteswap para U32: DEADBEEF : EF BE AD DE EFBEADDE : DE AD BE EF byteswap para U64: 0123456789ABCDEF : EF CD AB 89 67 45 23 01 EFCDAB8967452301 : 01 23 45 67 89 AB CD EF
[editar] Véase también
(C++20) |
Indica la endianness (extremidad) de los tipos escalares (enum) |
(C++20) |
Calcula el resultado de la rotación izquierda de bits (plantilla de función) |
(C++20) |
Calcula el resultado de la rotación derecha de bits (plantilla de función) |