大小端转换

一、概念

        高位低位:以0x12 34 56 78为例,12为高位,78为低位。

        高位低位理解:假设银行卡余额为12345678,12和78对比,12为高位,78为低位。

        高地址低地址: 0x00000001

                                0x00000002

                                0x00000003

                                0x00000004

                                上面地址中0x00000001为低地址,0x00000004为高地址

        高地址低地址理解:假设一本书有4页,第1页和第4页对比,第1页为低地址,第4页为高地址

        大端:高位数据存在低地址,符合人类阅读习惯

        小端:高位地址存在高地址,与人类阅读习惯相反

二、大小端转换代码 

#define SWAP_UINT16(x)	((((uint16_t)x) >> 8) | \
						((((uint16_t)x) << 8)))

#define SWAP_UINT32(x)	((((uint32_t)x) >> 24) | \
						((((uint32_t)x) & 0x00FF0000) >> 8) | \
						((((uint32_t)x) & 0x0000FF00) << 8) | \
						(((uint32_t)x) << 24))

#define SWAP_UINT64(x)	((((uint64_t)x) >> 56) | \
						((((uint64_t)x) & 0x00FF000000000000) >> 40) | \
						((((uint64_t)x) & 0x0000FF0000000000) >> 24) | \
						((((uint64_t)x) & 0x000000FF00000000) >> 8) | \
						((((uint64_t)x) & 0x00000000FF000000) << 8) | \
						((((uint64_t)x) & 0x0000000000FF0000) << 24) | \
						((((uint64_t)x) & 0x000000000000FF00) << 40) | \
						(((uint64_t)x) << 56))

三、实际测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

古道青阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值