Heim >Backend-Entwicklung >Golang >String-Hashing in Kotlin und Golang
In Dienst a habe ich eine Zeichenfolge, die wie folgt gehasht ist:
fun string.tohash(): long { var hashcode = this.hashcode().tolong() if (hashcode < 0l) { hashcode *= -1 } return hashcode }
Ich möchte diesen in Golang geschriebenen Code in Service B replizieren, damit ich für dasselbe Wort genau den gleichen Hash erhalte. Soweit ich der Kotlin-Dokumentation entnehme, gibt der angewendete Hash eine 64-Bit-Ganzzahl zurück. Also los geht's, ich mache das:
func hash(s string) int64 { h := fnv.new64() h.write([]byte(s)) v := h.sum64() return int64(v) }
Aber ich erhalte beim Unit-Testen nicht den gleichen Wert. Ich bekomme:
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) } }
Ergebnis:
7841672725449611742
Habe ich etwas falsch gemacht?
Java und Kotlin verwenden andere Hash-Funktionen als Go.
Mögliche Optionen sind:
Das obige ist der detaillierte Inhalt vonString-Hashing in Kotlin und Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!