打印
[DemoCode下载]

字节序转换操作

[复制链接]
528|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xuanhuanzi|  楼主 | 2024-2-27 16:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
uint16_t swap_bytes(uint16_t value) { return (value >> 8) | (value << 8); }
这段代码实现了一个字节序(即大端序和小端序)转换操作,用于将一个16位的整数值的字节序进行交换。在大端序(Big Endian)中,高位字节存储在低地址,低位字节存储在高地址;而在小端序(Little Endian)中,低位字节存储在低地址,高位字节存储在高地址。该函数的作用是将输入的16位整数的字节序进行转换。

使用特权

评论回复
沙发
xuanhuanzi|  楼主 | 2024-2-27 16:07 | 只看该作者
#include <stdint.h>

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

拓展说明:

>> 和 << 运算符分别表示右移和左移操作,用于将位数进行移动。
| 运算符表示按位或操作,用于将两个数的对应位进行或运算。
在该函数中,首先通过 value >> 8 取出输入值的高位字节,然后再将其左移8位,从而变成低位字节;类似地,通过 value << 8 取出输入值的低位字节,并将其右移8位,从而变成高位字节。最后,通过按位或操作将这两个字节组合成结果,实现了字节序的转换。
这个函数非常简单且高效,适用于在大端序和小端序之间进行转换,特别是在需要在不同字节序系统之间传递数据时。

使用特权

评论回复
板凳
21mengnan| | 2024-2-27 21:36 | 只看该作者
这个主要用于什么?

使用特权

评论回复
地板
21mengnan| | 2024-2-27 21:36 | 只看该作者
懂了,是将高八位放到低八位,低八位放在高八位。

使用特权

评论回复
5
捉虫天师| | 2024-2-27 21:41 | 只看该作者
写成宏很有用,高效。

使用特权

评论回复
6
捉虫天师| | 2024-2-27 22:00 | 只看该作者
常用位逻辑操作技术。

使用特权

评论回复
7
xinpian101| | 2024-2-28 20:41 | 只看该作者
嵌入式C基础技能。

使用特权

评论回复
8
黑心单片机| | 2024-2-28 20:46 | 只看该作者
这个方式好简洁啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

171

主题

2169

帖子

3

粉丝