当我打印通过 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
我不知道为什么会这样。
最佳答案
参数将在传递给 printf 之前转换为 int,因为您的 buff
变量已签名,因此它将扩展为 32 位并填充更高的位 1,结果为 0xFFFFFFxx。
因此您必须在传递之前将其转换为无符号:
printf("%02x ", (unsigned char)buff);
关于linux - 收到网络编程打印包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33272569/