Chinaunix首页 | 论坛 | 博客
  • 博客访问: 24854
  • 博文数量: 10
  • 博客积分: 1415
  • 博客等级: 上尉
  • 技术积分: 75
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-23 15:21
文章分类

全部博文(10)

文章存档

2011年(1)

2009年(9)

我的朋友
最近访客

分类: LINUX

2009-08-20 20:11:43

其實只需要這樣一段代碼
    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) |
给主人留下些什么吧!~~