1.16位数据转有符号类型
#include <stdio.h>
unsigned short testNum=0xFF9B;
int main(void)
{
printf("before: %d, after: %d",testNum,(short)testNum);
return 0;
}
运行结果
在使用485通信的温湿度模块时,它返回的温度为负值时,已补码的形式发送出来,这时就需要转换为有符号类型的数据。
2.uint8_t类型接收uint16_t类型数据
#include <stdio.h>
short u16Data = 10002;
unsigned char u8Data = 0;
int main(void)
{
u8Data = u16Data;
printf("u16Data=0x%x, u8data=%d\r\n",u16Data,u8Data);
return 0;
}
结果
在接收飞机发来的数据包时,发送和解析完的参数都是16位的,但是当时把他付给了一个8位的数。可以看出,8位数据只取了16位数据的低8位。