#include <stdio.h>
typedef unsigned short __u16;
typedef unsigned int __u32;
#define ___swab16(__x) ((__u16)((((__u16)(__x) & (__u16)0x00ffU) << 8) |(((__u16)(__x) & (__u16)0xff00U) >> 8) ))
#define ___swab32(__x) ((__u32)((((__u32)(__x) & (__u32)0x000000ffUL) << 24) | \
(((__u32)(__x) & (__u32)0x0000ff00UL) << 8) | \
(((__u32)(__x) & (__u32)0x00ff0000UL) >> 8) | \
(((__u32)(__x) & (__u32)0xff000000UL) >> 24) ))
int main(void)
{
__u16 a = 0xabcd;
__u32 b = 0x12345678;
__u32 c = 0x78563412;
printf("0x%x\n",___swab16(a));
printf("0x%x\n",___swab32(b));
printf("0x%x\n",___swab32(c));
return 0;
}
大小端转换
最新推荐文章于 2025-02-10 10:47:28 发布