C - 表示结构的位的操作

时间:2015-06-13 01:25:42

标签: c hash bit-manipulation

我试图在C中编写hashset,并且我发现了一个哈希函数,它根据数据中的位进行哈希处理。我有以下结构:

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

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

1 个答案:

答案 0 :(得分:5)

单独迭代while和XOR的所有字节,例如,

struct

用法是:

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可能有填充,即带有与实际有效载荷字段值无关的潜在非确定性值的额外字节。)