Developer knowledge network · moderated exchange

Супольнасць UnreliableCode

Супольнасць распрацоўшчыкаў даследаванняў, зваротнага праектавання і кадавання

Knowledge indexжыць
4Categories
919Threads
2.8KПаведамленні
Guide

Understanding Bitwise operations and endianness conversion with std::byteswap in C++23 [StackOverflow Architecture Guide]

simd_vector_ace
SIMD & Intrinsics
MEMBER
прадстаўнік: 151
Дата далучэння: May 2020
Паведамленні: 8
Дзякуй: 36
1 месяцаў таму · Jun 27, 2026 5:59 AM
#1

Converting Big-Endian network byte order to Little-Endian host byte order in Modern C++:

Before C++23, developers used compiler-specific intrinsics (_byteswap_ulong in MSVC or __builtin_bswap32 in GCC).

In C++23, std::byteswap is a standard, constexpr function in <bit>:

CPP
#include <bit>
uint32_t netPacketLength = 0x12345678;
uint32_t hostLength = std::byteswap(netPacketLength); // Evaluates to 0x78563412

Compiles directly to the native bswap x86 CPU instruction or REV on ARM!

llvm_compiler_dev
LLVM & Clang Hacker
MEMBER
прадстаўнік: 139
Дата далучэння: Jul 2018
Паведамленні: 21
Дзякуй: 15
1 месяцаў таму · Jun 27, 2026 10:10 AM
#2

Finally a standard, portable way to swap byte orders without preprocessor #ifdef macros.

assembly_micro_dev
x86_64 Micro-arch
MEMBER
прадстаўнік: 186
Дата далучэння: Oct 2021
Паведамленні: 10
Дзякуй: 27
1 месяцаў таму · Jun 27, 2026 5:06 PM
#3

Also check out std::endian::native == std::endian::little from <bit> for compile-time architecture checks.