收到网络编程打印包

时间:2015-10-22 02:46:16

标签: linux network-programming

当我打印通过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

我不知道为什么会这样。

1 个答案:

答案 0 :(得分:0)

参数将在传递给printf之前转换为int,因为您的buff变量已经过签名,因此它将扩展为32位,填充位更高位1,从而产生0xFFFFFFxx。

为此,您必须在传递之前将其转换为无符号:

printf("%02x ", (unsigned char)buff);