Comment une fonction de hachage sdbm
(telle que this) peut-elle être implémentée en C#?Comment une fonction de hachage sdbm pourrait-elle être implémentée en C#?
3
A
Répondre
4
Vous pouvez prendre le code C presque sans changements:
uint sdbm(string str)
{
uint hash = 0;
foreach(char ch in str)
{
hash = ch + (hash << 6) + (hash << 16) - hash;
}
return hash;
}
Ou pensez-vous de quelque chose de plus sophistiqué?
1
Je n'ai pas un compilateur C mis en place, je ne peux pas tester pour voir si elle effectue la même chose, mais je pense ce qui suit est correcte:
private static ulong SBDM(string str)
{
ulong hash = 0;
foreach (char c in str)
{
hash = c + (hash << 6) + (hash << 16) - hash;
}
return hash;
}
Si vous avez juste besoin obtenir un hachage de la chaîne et peu importe l'implémentation, vous pouvez toujours faire theString.GetHashCode();
0
Le résultat du hachage diffère entre l'implémentation C++ et C#. J'ai compris que le paramètre str doit être passé en tant que tableau d'octets.
private uint sdbm(byte[] str)
{
uint hash = 0;
foreach (char ch in str)
hash = ch + (hash << 6) + (hash << 16) - hash;
return hash;
}
appeler la méthode en convertissant la valeur à hacher avec la méthode BitConverter.GetBytes.
uint Hash = sdbm(BitConverter.GetBytes(myID));
Questions connexes
- 1. Comment transmettre un hachage à une fonction en Perl?
- 2. Construit en fonction de hachage python()
- 3. Fonction de hachage procédural
- 4. Une machine virtuelle peut-elle être implémentée en tant que réseau de neurones?
- 5. Fonction de hachage pour une paire de long long?
- 6. checksum/fonction de hachage avec propriété réversible
- 7. Fonction de hachage Visual basic 6.0
- 8. Comment appeler une fonction juste avant de revenir en C?
- 9. Choix d'un multiplicateur pour une fonction de hachage (chaîne)
- 10. Comment savoir quelle fonction de hachage a été utilisée?
- 11. Comment une table de hachage peut-elle être liée à une liste déroulante?
- 12. fonction Javascript dans un objet/hachage
- 13. Comment itérer sur un hachage en Ruby?
- 14. Comment remplacer une clé de hachage Perl?
- 15. Syntaxe d'exécution de commande portable implémentée en Python
- 16. Un hachage SHA-1 peut-il être purement numérique?
- 17. meilleure façon d'offrir une table de hachage statique C#
- 18. peut être une boucle longue pour être brisée en plusieurs tranches de fil en C#
- 19. En C++ si une fonction membre est virtuelle quand la liaison statique peut-elle être utilisée?
- 20. Comment trouver les clés d'un hachage?
- 21. Comment puis-je appeler une fonction masquée en C++?
- 22. Comment quittez-vous une fonction void en C++?
- 23. Comment configurer une fonction C++ pour qu'elle puisse être utilisée par p/invoke?
- 24. Sys.InvalidOperationException: gestionnaire doit être une fonction
- 25. Comment trier pas simple hachage (hachage de hachages)
- 26. Générer un hachage de document XML en C#
- 27. De retour d'une fonction en C#
- 28. Fonction de hachage par mot de passe pour Excel VBA
- 29. Obtenir l'index de hachage approprié C++
- 30. fonction abs en C