其實只需要這樣一段代碼
union UA
{
int a;
char c[4];
}u;
u.a = 0x12345678;
cout << hex << (unsigned short)u.c[0] << endl
<< hex << (unsigned short)u.c[1] << endl
<< hex << (unsigned short)u.c[2] << endl
<< hex << (unsigned short)u.c[3] << endl;
如果輸出的第一個為 78那么就是小端 如果是12 就是大端。
但是 有時候 需要在編譯期 確定 那么就需要用宏來完成:
可以根據所用的cpu然后寫可移植的代碼
#define BYTE_ORDER
#define LITTLE_ENDIAN 1234
#define BIG_ENDIAN 4321
# if( BYTE_ORDER == LITTLE_ENDIAN )
// then little endian
#else
// then bigendian
#endif
然后 可以對數據根據大小端 使用bit操作進行調整 主要就是左移右移之類的
阅读(738) | 评论(0) | 转发(0) |