繁体   English   中英

C如何将字符串哈希函数与布尔值结合起来?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM