【问题标题】:Network programming print packet received收到网络编程打印包
【发布时间】:2015-10-31 17:50:53
【问题描述】:

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

我不知道为什么会这样。

【问题讨论】:

  • buf的类型是什么?
  • buf是c char数组,它的大小足够大。
  • 服务器可以正常解析包,只是输出奇怪。
  • 你的问题到底是什么?

标签: linux network-programming


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2017-04-21
    • 2012-05-28
    • 2011-04-13
    • 2011-04-12
    • 2012-11-02
    • 2013-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多