Thursday, November 22, 2012

LITTLE_ENDIAN vs BIG_ENDIAN - SWAP16/32








     84 #define SWAP16(a)  ((u_int16) (((((u_int16) (a)) >> 8) & 0xff) | \
     85                                ((((u_int16) (a)) & 0xff) << 8)))
     86 #define SWAP32(a)              \
     87       (((((u_int32) (a)) >> 24) & 0xff)    | \
     88        ((((u_int32) (a)) & 0xff0000) >> 8) | \
     89        ((((u_int32) (a)) & 0xff00) << 8)   | \
     90        ((((u_int32) (a)) & 0xff) << 24))
     91
     92 #ifdef LITTLE_ENDIAN_
     93 #define TO_BIG_END16(a)       SWAP16(a)
     94 #define TO_LITTLE_END16(a)    ((u_int16) (a))
     95 #define FROM_BIG_END16(a)     SWAP16(a)
     96 #define FROM_LITTLE_END16(a)  ((u_int16) (a))
     97 #define TO_BIG_END32(a)       SWAP32(a)
     98 #define TO_LITTLE_END32(a)    ((u_int32) (a))
     99 #define FROM_BIG_END32(a)     SWAP32(a)
    100 #define FROM_LITTLE_END32(a)  ((u_int32) (a))
    101 #else
    102 #define TO_BIG_END16(a)       ((u_int16) (a))
    103 #define TO_LITTLE_END16(a)    SWAP16(a)
    104 #define FROM_BIG_END16(a)     ((u_int16) (a))
    105 #define FROM_LITTLE_END16(a)  SWAP16(a)
    106 #define TO_BIG_END32(a)       ((u_int32) (a))
    107 #define TO_LITTLE_END32(a)    SWAP32(a)
    108 #define FROM_BIG_END32(a)     ((u_int32) (a))
    109 #define FROM_LITTLE_END32(a)  SWAP32(a)
    110 #endif

No comments:

Post a Comment

Labels