0

Madcreator の Rabinfingerprint Java ライブラリを scala プログラムhttps://github.com/themadcreator/rabinfingerprintで使用しています。

コマンド ラインを使用して、53 度の既約多項式を生成します。

java -jar rabinfingerprint.jar -polygen 53
31DF3F8C7356D3

次に、ファイルのフィンガープリントを作成します。

java -jar rabinfingerprint.jar -p 31DF3F8C7356D3 file.txt
1847CCD86D5DE5 file.txt

私が抱えている問題は、コードを使用して、同じ入力が与えられたときに同じ出力を生成することです。

// Can't create Polynomial from hex above, so convert hex to long and use that:
val polynomial = Polynomial.createFromLong(14037737891124947L)
// val p = java.lang.Long.toString(14037737891124947L, 16) 
// p = 31DF3F8C7356D3 same as command line input

val rabin = new RabinFingerprintLong(polynomial)
rabin.pushBytes(text.getBytes)

val fp = rabin.getFingerprintLong
println(java.lang.Long.toString(fp, 16))  // 1acc76a73eed1f
fp.toString // 7543159378603295

// Where is 1847CCD86D5DE5 ?
4

1 に答える 1

0

上記のコメントで述べたように、ファイルの内容を文字列に読み込む場合は、改行やその他の文字を取り除かないように注意する必要がありますsource.getLines.mkString。改行が失われます。つまり、Guava のByteStreams.toByteArray.

于 2014-01-22T00:06:03.320 に答える