[英]C how to combine string hash function with boolean?
我有一个结构,其中包含一个 char* 和一个始终为 1 或 0 的 char。这是我的结构定义:
typedef struct Literal {
char *name;
char is_negated;
} Literal;
对于字符串散列,我使用来自http://www.cse.yorku.ca/~oz/hash.html 的djb2 :
size_t str_hash(void *string) {
unsigned char *str = string;
size_t hash = 5381;
int c;
while ((c = *str++)) {
hash = ((hash << 5) + hash) + c; /* hash * 33 + c */
}
return hash;
}
我需要为我的结构创建一个哈希,它将字符串哈希中的信息与is_negated
结合起来。
这是在不引入偏见的情况下做到这一点的方法:
return (str_hash(name) << 1) + is_negated;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.