我正在使用一个微 Controller ,我尝试连接的传感器发送 uint8_t 数据。问题是我可以使用 uint32_t 函数读取引脚。
所以我想我可以用 uint32_t 读取引脚,但我必须“提取”它。但我却胡言乱语......
uint32_t number = 429496729;
uint8_t x1 = (number >> (8*0)) & 0xff;
uint8_t x2 = (number >> (8*1)) & 0xff;
uint8_t x3 = (number >> (8*2)) & 0xff;
uint8_t x4 = (number >> (8*3)) & 0xff;
例如,打印 x3 会给出“™”。与x1相同。这是怎么回事?
最佳答案
从您的代码来看,“™”正是您所期望的。
// 0x19999999 - NOTE: you'd need an extra '5' on the end to make it MAX_UNIT. eg. 0xFFFFFFFF
uint32_t number = 429496729;
uint8_t x1 = (number >> (8*0)) & 0xff; // 0x99
uint8_t x2 = (number >> (8*1)) & 0xff; // 0x99
uint8_t x3 = (number >> (8*2)) & 0xff; // 0x99
uint8_t x4 = (number >> (8*3)) & 0xff; // 0x19
如果你去查找"™"扩展ascii中的符号,它映射到153,例如。 0x99h。
关于c - 如何获取uint32_t的uint8_t数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51004638/