gpt4 book ai didi

c - 从 libpcap 捕获中提取数据包长度

转载 作者:行者123 更新时间:2023-11-30 19:19:44 25 4
gpt4 key购买 nike

我正在使用 libpcap(gcc, linux),出于某种原因,我想从 u_char packet[] 中提取数据包长度,并将其保存为整数;说出存储在 packet[38] packet[39] 中的数据包长度。像这样:

#include <stdio.h>
#include <netdb.h>

int main(int argc, char *argv[]) {

u_char packet[2] = {0xaa, 0xfc};

int length = 0xaafc; // how to do that ?

printf("%d\n", length);
}

到目前为止我已经尝试过这个:

#include <stdio.h>
#include <stdlib.h>
#include <netdb.h>


int main(void)
{
u_char packet[2] = {0xaa, 0xfc};
int l = packet[0] | (packet[1]<<8);
printf("%d\n", l);
}

但没有成功!

那么如何在c中实现这一点呢?另外,如果我应该在这里发布整个代码,只需命名它......

谢谢。

最佳答案

您应该转换到 int在执行左移之前:

int l = packet[0] | (((int)packet[1])<<8);

如果没有这个 Actor ,packet[1]<<8是 0 - 您采用一个 8 位变量并将其位左移 8 次。您最终会得到 8 个零位。

关于c - 从 libpcap 捕获中提取数据包长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23769700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com