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;
}