在 C 中减去无符号字符数组的最有效方法



我正在使用libpcap来分析和处理数据包。我必须比较两个无符号字符数组,取差异并将其保存到哈希表中。另一个线程将定期扫描哈希表并计算平均值、标准偏差、最大值和最小值。

我的问题是,对两个数组执行减法的最有效方法是什么?

例如:

A="0x34 0x44 0x59 0x5B"
B="0x34 0x42 0x43 0x43"

我的第一个想法是将其转换为整数,通过将数组转换为有符号字符数组,执行 take 需要一个函数来执行查找函数。因为这是为系统上收到的每个数据包调用的函数。

使用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("%un", A.int_array - B.int_array);
}

最新更新