如何获取uint32_t的uint8_t数据

时间:2018-06-23 20:04:43

标签: c bit-manipulation

我正在与一个微控制器一起工作,在该微控制器中,我要连接的传感器发送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相同。这是怎么回事?

1 个答案:

答案 0 :(得分:1)

根据您的代码,“™”正是您所期望的。

// 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。