Maison > développement back-end > Golang > Hachage de chaînes dans Kotlin et Golang

Hachage de chaînes dans Kotlin et Golang

WBOY
Libérer: 2024-02-06 10:12:12
avant
703 Les gens l'ont consulté

Kotlin 和 Golang 中的字符串散列

Contenu de la question

En service a j'ai une chaîne qui est hachée comme ceci :

fun string.tohash(): long {
    var hashcode = this.hashcode().tolong()
    if (hashcode < 0l) {
        hashcode *= -1
    }
    return hashcode
}
Copier après la connexion

Je veux répliquer ce code dans le service b écrit en golang, donc pour le même mot j'obtiens exactement le même hachage. D'après ce que j'ai compris de la documentation Kotlin, le hachage appliqué renvoie un entier de 64 bits. Alors allez je fais ça :

func hash(s string) int64 {
    h := fnv.new64()
    h.write([]byte(s))
    v := h.sum64()
    return int64(v)
}
Copier après la connexion

Mais je n'obtiens pas la même valeur en faisant des tests unitaires. J'obtiens :

func test_hash(t *testing.t) {
    tests := []struct {
        input  string
        output int64
    }{
        {input: "papafritas", output: 1079370635},
    }
    for _, test := range tests {
        got := hash(test.input)
        assert.equal(t, test.output, got)
    }
}
Copier après la connexion

Résultat :

7841672725449611742
Copier après la connexion

Ai-je fait quelque chose de mal ?


Bonne réponse


Java et Kotlin utilisent des fonctions de hachage différentes de celles de Go.

Les options possibles sont :

  1. Utilise des fonctions de hachage standard.
  2. Réimplémentez Java hashCode pour les chaînes dans Go.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal