我有以下代码:
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对大多数数据包都是负数。你们可以看到一个错误。
答案 0 :(得分:0)
%d打印一个有符号整数(所以这里它将unsigned int转换为signed int)。使用%u表示无符号整数。