当我打印通过UDP从客户端收到的数据包时。
printf("%02x ", buff);
大多数字节都是正常的,但有一些"字符串"输出,如下所示
00 11 22 33 45 56 aa ab
98 ff fe a2 d3 25 78 c6
f2 ffffffd3 ffffffc4 11 22 33 44 55
...
字节d3 ---> ffffffd3,c4 ---> ffffffc4
我不知道为什么会这样。
答案 0 :(得分:0)
参数将在传递给printf之前转换为int,因为您的buff
变量已经过签名,因此它将扩展为32位,填充位更高位1,从而产生0xFFFFFFxx。
为此,您必须在传递之前将其转换为无符号:
printf("%02x ", (unsigned char)buff);