C как объединить строку ha sh с логическим значением? - PullRequest
0 голосов
/ 28 марта 2020

У меня есть структура, которая содержит символ * и символ, который всегда равен 1 или 0. Вот мое определение структуры:

typedef struct Literal {
    char *name;
    char is_negated;
} Literal;

Для хеширования строк я использую djb2 из http://www.cse.yorku.ca/~oz/hash.html:

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;
}

Мне нужно создать ha sh для моей структуры, которая будет объединять информацию из строки ha sh с is_negated.

1 Ответ

0 голосов
/ 28 марта 2020

Вот способ сделать это без введения смещения:

return (str_hash(name) << 1) + is_negated;
...