我正在尝试将数字传感器模块连接到 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/