ホームページ  >  記事  >  バックエンド開発  >  Go と Python の間の Murmur3 ハッシュの互換性

Go と Python の間の Murmur3 ハッシュの互換性

王林
王林転載
2024-02-09 13:10:191168ブラウズ

Go 和 Python 之间的 Murmur3 哈希兼容性

php エディター Zimo は、Go と Python の間の Murmur3 ハッシュの互換性を紹介します。 Murmur3 は、データ構造およびアルゴリズムのハッシュ操作に一般的に使用される効率的なハッシュ アルゴリズムです。 Murmur3 ハッシュ アルゴリズムは、Go と Python の 2 つのプログラミング言語で異なる方法で実装されているため、使用時に互換性の問題が発生する可能性があります。この記事では、Go と Python の Murmur3 ハッシュ アルゴリズムの違いについて詳しく説明し、異なる言語間でデータを渡すときに正しいハッシュ互換性を確保するためのソリューションを提供します。

質問の内容

2 つの異なるライブラリがあり、1 つは Python で、もう 1 つは go で、同じ方法で murmur3 ハッシュを計算する必要があります。残念ながら、どんなに頑張っても、ライブラリで同じ結果を生成することはできませんでした。 Java と Python に関するこの質問から判断すると、互換性は必ずしも単純ではありません。

現在、Python mmh3 を使用し、github.com/spaolacci/murmur3 ライブラリに移動します。

準備中:

リーリー

Python の場合:

リーリー

Go では、murmur3uint64 を返すため、Python では signed=false を想定しますが、signed= true## も試してみました。 # 一致するハッシュ値を取得できませんでした。

私たちはさまざまなライブラリを受け入れていますが、文字列から Base64 でエンコードされたハッシュを計算する Go または Python のアプローチに問題があるかどうか知りたいと思っています。助けていただければ幸いです。

解決策

最初の Python の結果はほぼ正しいです。

リーリー

準備中:

リーリー ###結果:### リーリー

つまり、これら 2 つの単語の順序は逆になります。 Python で同じ結果を得るには、次のことを試すことができます:

リーリー

以上がGo と Python の間の Murmur3 ハッシュの互換性の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。