1、计算机都是以补码的形式存储,正数的补码就是本身,负数的补码的是按位(最高位是符号位,符号位不取反)取反加1;
2、因此,不管发送什么数据,本质就是发送补码,比如我发送0xffff,接收端是以带符号的方式接收,那么就是-1;以无符号的方式接收就是65535;
3、故:发送时强制转换为无符号数即可;或者不需理会,函数形参类型是什么,调用时会默认转换为该类型,但有些编译器会提示警告,建议加强制转换;
比如:[C]
纯文本查看 复制代码
int i = -1;RT_SendData(uart, (uint16_t)i);//或者简单粗暴RT_SendData(uart, i);
1、计算机都是以补码的形式存储,正数的补码就是本身,负数的补码的是按位(最高位是符号位,符号位不取反)取反加1;
2、因此,不管发送什么数据,本质就是发送补码,比如我发送0xffff,接收端是以带符号的方式接收,那么就是-1;以无符号的方式接收就是65535;
3、故:发送时强制转换为无符号数即可;或者不需理会,函数形参类型是什么,调用时会默认转换为该类型,但有些编译器会提示警告,建议加强制转换;
比如:[C] 纯文本查看 复制代码
int i = -1;RT_SendData(uart, (uint16_t)i);//或者简单粗暴RT_SendData(uart, i);
举报