当前位置: 技术问答>linux和unix
uclinux 下c编程怎么会出这样的问题?
来源: 互联网 发布时间:2016-06-09
本文导语: 我定义了一个缓冲区 char buff[256]; 读串口: nread = read(fd,buff,sizeof(buff)); 读出来的数据个数正确,数据也正确,怪就怪在有一个字节buff[5],按道理应该是E7, 但我把它显示出来 printf("%02x",buff[5]); 显示的结果是 FFFF...
我定义了一个缓冲区
char buff[256];
读串口:
nread = read(fd,buff,sizeof(buff));
读出来的数据个数正确,数据也正确,怪就怪在有一个字节buff[5],按道理应该是E7,
但我把它显示出来 printf("%02x",buff[5]);
显示的结果是 FFFFFFE7,就是说本来只是一个字节,但显示出来前面有好几个F,造成数据错误,怎么会出现这种问题呢?我以前一直在windows下编程,转到linux下不久,出现这样的问题很奇怪,请高手解决。
char buff[256];
读串口:
nread = read(fd,buff,sizeof(buff));
读出来的数据个数正确,数据也正确,怪就怪在有一个字节buff[5],按道理应该是E7,
但我把它显示出来 printf("%02x",buff[5]);
显示的结果是 FFFFFFE7,就是说本来只是一个字节,但显示出来前面有好几个F,造成数据错误,怎么会出现这种问题呢?我以前一直在windows下编程,转到linux下不久,出现这样的问题很奇怪,请高手解决。
|
printf("%02hhx",buff[5]);
hh
Speci?es that a following d, i, o, u, x,or X conversion speci?er applies to a
signed char or unsigned char argument (the argument will have
been promoted according to the integer promotions, but its value shall be
converted to signed char or unsigned char before printing); or that
afollowing n conversion speci?er applies to a pointer to a signed char
argument.