我使用libpcap来分析和处理数据包。我必须比较两个无符号字符数组,取差异并将其保存到哈希表中。另一个线程将定期扫描散列表并计算平均值,标准差,最大值和最小值。
我的问题如下,在两个数组上执行减法的最有效方法是什么?
例如:
A="0x34 0x44 0x59 0x5B"
B="0x34 0x42 0x43 0x43"
我的第一个想法是将它转换为整数,通过将数组转换为有符号字符数组,执行take需要一个函数来执行查找功能。因为这是为系统上收到的每个数据包调用的功能。
答案 0 :(得分:1)
使用union
可以使这个变得简单,因为不同的数据类型共享相同的内存,我们可以使用此功能来转换数据类型。
#include <stdio.h>
typedef union new_array{
struct array {
unsigned char f4;
unsigned char f3;
unsigned char f2;
unsigned char f1;
}array;
unsigned int int_array;
}new_array;
int main()
{
new_array A, B;
A.array.f1 = 0x34;
A.array.f2 = 0x44;
A.array.f3 = 0x59;
A.array.f4 = 0x5B;
B.array.f1 = 0x34;
B.array.f2 = 0x42;
B.array.f3 = 0x43;
B.array.f4 = 0x43;
printf("%u\n", A.int_array - B.int_array);
}