Java と C++ の 2 つの個別のアプリケーションがあります。両方に Murmurhash3 を使用しています。ただし、C++ では、同じ文字列に対して Java と比較して異なる結果が得られます。
これは C++ のものです: https://code.google.com/p/smhasher/source/browse/trunk/MurmurHash3.cpp?r=144
私は次の機能を使用しています:
void MurmurHash3_x86_32 ( const void * key, int len,
uint32_t seed, void * out )
これは Java 用のものです: http://search-hadoop.com/c/HBase:hbase-common/src/main/java/org/apache/hadoop/hbase/util/MurmurHash3.java||server+void+% 2522ハッシュ
上記の同じ Java コードの多くのバージョンがあります。
これは、私が Java を呼び出す方法です。
String s = new String("b2622f5e1310a0aa14b7f957fe4246fa");
System.out.println(MurmurHash3.murmurhash3_x86_32(s.getBytes(), 0, s.length(), 2147368987));
Java から得た出力: -1868221715
C++ 3297211900 から得られる出力
「7c6c5be91430a56187060e06fd64dcb8」や「7e7e5f2613d0a2a8c591f101fe8c7351」などの他のサンプル文字列をテストしたところ、Java と C++ で一致しました。
任意のポインタをいただければ幸いです