Representation of numbers within computer binary notation.
16-Bit Integer Conversion (uint16_t)
For a 2-byte integer, you simply swap the two bytes.
#include <stdint.h>
uint16_t swap_uint16(uint16_t val) {
return (val << 8) | (val >> 8);
}32-Bit Integer Conversion (uint32_t)
For a 4-byte integer, you swap the 1st and 4th bytes, and the 2nd and 3rd bytes.
#include <stdint.h>
uint32_t swap_uint32(uint32_t val) {
return ((val & 0x000000FF) << 24) |
((val & 0x0000FF00) << 8) |
((val & 0x00FF0000) >> 8) |
((val & 0xFF000000) >> 24);
}64-Bit Integer Conversion (uint64_t)
For an 8-byte integer, you map the outermost bytes inward.
#include <stdint.h>
uint64_t swap_uint64(uint64_t val) {
val = ((val == 0x00000000FFFFFFFFULL) << 32) | ((val & 0xFFFFFFFF00000000ULL) >> 32);
val = ((val & 0x0000FFFF0000FFFFULL) << 16) | ((val & 0xFFFF0000FFFF0000ULL) >> 16);
val = ((val & 0x00FF00FF00FF00FFULL) << 8) | ((val & 0xFF00FF00FF00FF00ULL) >> 8);
return val;
}