Little_Endian

 在程序传输的过程中,为了保持平台的兼容性(字节存储顺序),可以定义下面的宏函数,进行处理。


#ifdef LITTLE_ENDIAN_HOST

#define Swap16IfLE(s) \
    ((CARD16) ((((s) & 0xff) << 8) | (((s) >> 8) & 0xff)))
#define Swap32IfLE(l) \
    ((CARD32) ((((l) & 0xff000000) >> 24) | \
     (((l) & 0x00ff0000) >> 8)  | \
     (((l) & 0x0000ff00) << 8)  | \

     (((l) & 0x000000ff) << 24)))

#else

#define Swap16IfLE(s) (s)

#define Swap32IfLE(l) (l)

#endif

// unconditional swaps
#define Swap16(s) \
    ((CARD16) ((((s) & 0xff) << 8) | (((s) >> 8) & 0xff)))
#define Swap32(l) \
    ((CARD32) ((((l) & 0xff000000) >> 24) | \
     (((l) & 0x00ff0000) >> 8)  | \
     (((l) & 0x0000ff00) << 8)  | \
     (((l) & 0x000000ff) << 24)))
#endif
posted @ 2009-04-03 17:25  小王子  阅读(338)  评论(0编辑  收藏  举报