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 № 1Ogó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.