版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/linxi8693/article/details/89445669
解决办法
将定义的的字符数组改为 unsigned char buf[size];
例程
char buf[size];
for(int i=0;i<size;i++)
printf("%x",buf[i]); // 输出数据时,会输出很多ff
unsigned char buf[size];
for(int i=0;i<size;i++)
printf("%x",buf[i]); // 输出正常
原因分析
只要字符型变量值的二进制第一位是1,就会出现6个ff
说明
格式输出函数printf中会对所输出的变量做有符号/无符号型的判断
有符号型变量,且该值二进制首位为1(如我们定义的是char buf[100],且buf[0]中为0xbf),则会按照补码形式前面全置为1,也就是全为f