[DemoCode下载] 字节序转换操作

[复制链接]
 楼主| xuanhuanzi 发表于 2024-2-27 16:07 | 显示全部楼层 |阅读模式
  1. uint16_t swap_bytes(uint16_t value) { return (value >> 8) | (value << 8); }
这段代码实现了一个字节序(即大端序和小端序)转换操作,用于将一个16位的整数值的字节序进行交换。在大端序(Big Endian)中,高位字节存储在低地址,低位字节存储在高地址;而在小端序(Little Endian)中,低位字节存储在低地址,高位字节存储在高地址。该函数的作用是将输入的16位整数的字节序进行转换。

 楼主| xuanhuanzi 发表于 2024-2-27 16:07 | 显示全部楼层
  1. #include <stdint.h>

  2. // 函数实现了字节序转换,将16位整数的字节序进行交换
  3. uint16_t swap_bytes(uint16_t value) {
  4.     // 将输入的16位整数右移8位,得到高位字节,并将其左移8位
  5.     // 将输入的16位整数左移8位,得到低位字节,并将其右移8位
  6.     // 然后通过按位或操作,将高位字节和低位字节组合成结果
  7.     return (value >> 8) | (value << 8);
  8. }

拓展说明:

>> 和 << 运算符分别表示右移和左移操作,用于将位数进行移动。
| 运算符表示按位或操作,用于将两个数的对应位进行或运算。
在该函数中,首先通过 value >> 8 取出输入值的高位字节,然后再将其左移8位,从而变成低位字节;类似地,通过 value << 8 取出输入值的低位字节,并将其右移8位,从而变成高位字节。最后,通过按位或操作将这两个字节组合成结果,实现了字节序的转换。
这个函数非常简单且高效,适用于在大端序和小端序之间进行转换,特别是在需要在不同字节序系统之间传递数据时。
21mengnan 发表于 2024-2-27 21:36 | 显示全部楼层
这个主要用于什么?
21mengnan 发表于 2024-2-27 21:36 | 显示全部楼层
懂了,是将高八位放到低八位,低八位放在高八位。
捉虫天师 发表于 2024-2-27 21:41 | 显示全部楼层
写成宏很有用,高效。
捉虫天师 发表于 2024-2-27 22:00 | 显示全部楼层
常用位逻辑操作技术。
xinpian101 发表于 2024-2-28 20:41 | 显示全部楼层
嵌入式C基础技能。
黑心单片机 发表于 2024-2-28 20:46 | 显示全部楼层
这个方式好简洁啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

183

主题

2307

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部