2013 04 30 14 05 [c] 用 bswap 轉換 little-endian 和 big-endian

因為x86組合語言裡有個指令叫做 bwap 用來做 byte order 轉換是比較快的,

因此 google了一下, 找到下面的資料.

在 visual C++ 裡是要用以下 function:

For 16 bit numbers:
unsigned short _byteswap_ushort(unsigned short value);

For 32 bit numbers:
unsigned long _byteswap_ulong(unsigned long value);

For 64 bit numbers:
unsigned __int64 _byteswap_uint64(unsigned __int64 value);

而在 GCC 則是要用以下 function:

For 32 bit numbers:
int32_t __builtin_bswap32 (int32_t x)

For 64 bit numbers:
int64_t __builtin_bswap64 (int64_t x)


Ref: How do I convert between big-endian and little-endian values in C++? - Stack Overflow