printf使用16进制方式打印时,有时会输出很多FF

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

猜你喜欢

转载自blog.csdn.net/linxi8693/article/details/89445669
今日推荐