#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;
}
大小端转换
最新推荐文章于 2024-09-02 01:34:24 发布
本文介绍了一种在C语言中实现字节序转换的方法,并通过具体的代码示例展示了如何对16位和32位无符号整数进行字节交换。通过定义宏和使用类型定义,该程序能够清晰地展示字节交换的过程。

1049

被折叠的 条评论
为什么被折叠?



