C编程:IP头ID为负

时间:2013-11-23 14:26:20

标签: c network-programming ip printf

我有以下代码:

struct ip_header {
        unsigned char ip_hl:4;
        unsigned char ip_ver:4;
        unsigned char ip_dscp:6;
        unsigned char ip_ecn:2;
        short ip_len;
        short ip_id;
...
};
...

const struct ip_header * ip_hdr = (const struct ip_header *)(buffer + ETHERNET_HEADER_SIZE);

...

printf("IP ID: %d", ip_hdr->ip_id);

我获得的IP ID对大多数数据包都是负数。你们可以看到一个错误。

1 个答案:

答案 0 :(得分:0)

%d打印一个有符号整数(所以这里它将unsigned int转换为signed int)。使用%u表示无符号整数。