简体   繁体   English

C编程:IP标头ID为负

[英]C programming: IP header ID is negative

I have following code: 我有以下代码:

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 I get is negative for most of the packets. 对于大多数数据包,我得到的IP ID为负。 Can you guys see a mistake. 你们能看到一个错误吗?

%d prints a signed integer (so here it converts your unsigned int into a signed int). %d打印一个带符号的整数(因此在这里它将无符号的int转换为带符号的int)。 Use %u for unsigned integers. 使用%u表示无符号整数。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM