c++ - 如何将 unsigned int 转换为 unsigned char

标签 c++ microcontroller

我正在尝试将数字传感器模块连接到 Arm Cortex M4F 芯片。

接收到的数据是来自模块的3个字节。然而,我的 MCU 中唯一可用的功能是 uint32_t 读取功能。我不知道为什么没有 uint8_t 函数,但也许这只是移位的问题?我一边去这里一边学习 C++。

所以我读取的值为:

uint32_t value = mcu_read(pin);

value 现在包含一个 uint32_t,4 个字节。我需要前三个。是否有可能以任何方式移动它以“提取”它们? 这有意义吗? showstopper 是 mcu_read 函数,它至少读取 4 个字节。如果那里有 uint8_t 读取函数,我只需调用它三次即可获取我需要的数据。

最佳答案

您可以使用 bit shift and logical and 提取字节:

uint32_t value = mcu_read(pin);
uint8_t byte_0 = (value >> 24) & 0xFF;
uint8_t byte_1 = (value >> 16) & 0xFF;
uint8_t byte_2 = (value >> 8) & 0xFF;
uint8_t byte_3 = (value) & 0xFF;

关于c++ - 如何将 unsigned int 转换为 unsigned char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51018611/

相关文章:

c++ - 获取模板类型的基类型(删除 const/reference/等)

c - 基于整数的传感器融合/卡尔曼滤波器

assembly - 端口映射、内存映射

java - 可以修改商店产品上的迷你 Controller /微 Controller 代码吗?

c++ - 重新分配而不释放旧内存

c++ - 使用 cmake 对共享库的 undefined reference

c++ - 关于函数/运算符重载的困惑

c++ - 连接到 Wi-Fi C++

c - 在功能有限的微 Controller 上加载和运行小脚本?

c - 具有其他阻挡功能的Arduino IR Remote