我试图在C中编写hashset,并且我发现了一个哈希函数,它根据数据中的位进行哈希处理。我有以下结构:
struct triple
{
int a;
int b;
int c;
};
问题是 - 如何从struct triple
类型的对象获取位表示?让我们说我想用8位整数对其位进行异或。我该怎么做?
答案 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
可能有填充,即带有与实际有效载荷字段值无关的潜在非确定性值的额外字节。)