C 中 CHAR 处理成 16进制时,自动补位了?该怎么解决

C 中 CHAR 处理成 16进制时,自动补位了?
C 中 CHAR  处理成 16进制时,自动补位了?该怎么解决

发现发送的16进制值大于 7F时, 在程序中,自动补了3个字节的数据,如发送 80,程序打印出来:FFFFFF80

ubuntu12.04系统





------解决思路----------------------
recvbuf是char型的吧?
char是一个字节的,所以0x7F以上就是负数了
而%x是用来输出int的,所以你的char会被扩展到4字节,对于0x7F,扩展后是0x0000007F,前面的0可省略,所以仍然输出0x7F
对于0x80,扩展后就是0xFFFFFF80了,前面的F不能省略,所以会输出来
至于%02x里的02,是不足2位补到2位,但超过2位不会截断
------解决思路----------------------
%x 为  unsigned  int