qiu*_*bit 3 c hash bit-manipulation
我正在尝试在C中编写hashset,并且我发现了一个哈希函数,它根据数据中的位进行哈希处理.我有以下结构:
struct triple
{
int a;
int b;
int c;
};
Run Code Online (Sandbox Code Playgroud)
问题是 - 如何从类型的对象获取位表示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;
}
}
Run Code Online (Sandbox Code Playgroud)
用法是:
struct triple my_struct;
// ...
bytexor(0xFF, &my_struct, sizeof my_struct);
Run Code Online (Sandbox Code Playgroud)
(注意:这回答了如何struct使用字节进行异或的问题.至于基于此实现一般的散列函数,它可能不是特别好的主意,因为struct可能有填充,即具有潜在不确定性的额外字节与实际有效载荷字段的值无关的值.)
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |