/ / Wygeneruj kod skrótu (zapisany w liczbach całkowitych) z ciągu znaków z językiem C [zamknięty] - c, skrót

Wygeneruj kod mieszający (zapisany w int) z łańcucha z C langage [closed] - c, hash

Chcę wygenerować kod skrótu jako int z ciągu.

Czy istnieją do tego predefiniowane algorytmy? czy istnieje implementacja dla tych algorytmów w C?

char name[100]="langage c"

Wygeneruj do tego kod skrótu name bufor do zmiennej całkowitej

int hash_code;

coś w tym stylu

int algo_hash(char *name) {
//hash algorithme
}
hash_code = algo_hash(name);

Poszukuję prostego kodu jako takiego

Odpowiedzi:

2 dla odpowiedzi № 1

Ogólna technika nazywa się „mieszanie". Jeśli znasz listę ciągów znaków, możesz użyć tego narzędzia gperf aby wygenerować dla nich idealną funkcję skrótu.

Jeśli ciągi są losowe, nie jest to możliwe wogólny przypadek z tymi ograniczeniami. Możesz użyć algorytmu skrótu SHA-1, ale który generuje 160-bitową liczbę z łańcucha i nie ma 100% gwarancji, że wartości są unikalne (kolizje z SHA-1 są po prostu bardzo mało prawdopodobne, ale nie niemożliwe).


1 dla odpowiedzi nr 2

Wierzę, że potrzebujesz wdrożyć mieszanie. Nadal nie będzie wyjątkowy - wątpię, czy uda ci się uniknąć kolizji.