C - 对表示结构的位的操作

C - operations on bits representing a structure

我正在尝试用 C 语言编写 hashset,我找到了一个哈希函数,它根据数据中的位进行哈希。我有以下结构:

struct triple
{
    int a;
    int b;
    int c;
};

问题是 - 如何从 struct triple 类型的对象中获取位表示?假设我想用 8 位整数对其位进行异或。我该怎么做?

遍历 struct 的所有字节并分别对每个字节进行 XOR,例如,

void bytexor(unsigned char xor_byte, void *data, size_t size) {
    unsigned char *p = data;
    while (size--) {
        *p++ ^= xor_byte;
    }
}

用法为:

struct triple my_struct;
// ...
bytexor(0xFF, &my_struct, sizeof my_struct);

(注意:这回答了如何将struct与字节异或的问题。至于基于此实现通用哈希函数,这可能不是一个特别好的主意,因为struct 可能有填充,即具有与实际有效载荷字段的值无关的潜在不确定值的额外字节。)