因此我无法解析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);
但我得到了错误的价值。我不确定我做错了什么。 任何帮助将不胜感激。
我正在错误地阅读标题的其他几个部分,希望找出这个可以帮助我弄清楚其余部分。
答案 0 :(得分:0)
ID的长度为两个字节,因此必须使用足够大的整数类型来保存两个字节。将它们加在一起并不会达到相同的效果。
click