linux - 收到网络编程打印包

标签 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

我不知道为什么会这样。

最佳答案

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

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

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

关于linux - 收到网络编程打印包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33272569/

相关文章:

ssl - Asio 流式传输 - 使用 SSL/TLS 加密的速度较慢

linux - 获取目录中递归包含的文件列表的最快方法是什么?

java - 尽管服务器已发送,客户端仍在等待服务器的回复

c - 子 POSIX 线程如何被取消

linux - Alpine Linux 3.7 上的 Docker 容器 : Strange pid 1 not visible within the container's pid namespace

networking - 计算子网掩码?

visual-c++ - pcap_findalldevs_ex 函数未定义

sockets - 是否有可能知道在 Linux 上 TCP 连接失败时是否缓冲了数据?

linux - CentOS7如何保留程序?

c - 如何在我的程序中获取 _GLOBAL_OFFSET_TABLE_ 地址?