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

标签 c arrays integer libpcap

我正在使用 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/

相关文章:

javascript 数组 if 语句

javascript - 在 AsyncStorage React Native 上保存对象数组

javascript - 包含文本和整数的 tablesorter 列

python - 获得整数排列的更有效方法?

c# - 将字符串从文本文件转换为整数数组

c - 将 char 数组传递给函数并将内容复制到另一个 char 数组

c - 在 C 中使用数组进行扫描和求和

c - gcc 的 __builtin_cpu_supports 检查操作系统支持吗?

c变量分配内存,指针

c++ - 具有隐式数组大小的模板参数