字节序反转实现

#include 
#include 

uint16_t endian_swaps(uint16_t n)
{
    return n << 8 | n >> 8;
}
uint32_t endian_swapl(uint32_t n)
{
    return endian_swaps(n >> 16) | endian_swaps((n << 16) >> 16) << 16;
}
uint64_t endian_swapll(uint64_t n)
{
    return endian_swapl(n & 0x00000000FFFFFFFF) * 0x100000000 | endian_swapl((n & 0xFFFFFFFF00000000) / 0x100000000);
}

int main(int argc, const char *argv[])
{
    uint16_t s = 0xAABB;
    uint32_t l = 0xAABBCCDD;
    uint64_t ll = 0x0011AABBCCDDEEFF;

    printf("s = %04X, ss = %04X\n", s, endian_swaps(s));
    printf("s = %08X, ss = %08X\n", l, endian_swapl(l));
    printf("s = %016llX, ss = %016llX\n", ll, endian_swapll(ll));

    return 0;
}

你可能感兴趣的:(字节序反转实现)