在c中发出读取和打印ip标头ID的问题

时间:2016-04-28 01:09:37

标签: c binary bit-manipulation

因此我无法解析IPV4标头。特别是我在阅读ID部分时遇到了麻烦。

我正在关注此图片。 IPV4Header

我正在使用fread读取整个ipv4数据包并将其存储到像这样的字符数组中

     unsigned char buffer[2048] = "";
     fread(buffer, 1, 20, file);

现在根据该图像,ID应该是第5和第6字节。

所以我尝试将它存储到unsigned char中并像这样打印

unsigned char id = buffer[4] + buffer[5]
printf("Identification: 0x%X (%d)\n", id, id);

但我得到了错误的价值。我不确定我做错了什么。 任何帮助将不胜感激。

我正在错误地阅读标题的其他几个部分,希望找出这个可以帮助我弄清楚其余部分。

1 个答案:

答案 0 :(得分:0)

ID的长度为两个字节,因此必须使用足够大的整数类型来保存两个字节。将它们加在一起并不会达到相同的效果。

click