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