Madcreator Rabinfingerprint命令行vs java / scala程序

时间:2014-01-21 19:53:08

标签: java scala fingerprint rabin

我在scala程序https://github.com/themadcreator/rabinfingerprint中使用Madcreator的Rabinfingerprint java库。

使用命令行我生成一个不可约的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 ?

1 个答案:

答案 0 :(得分:0)

正如我在上面的评论中所指出的,如果您正在将文件的内容读入字符串,则需要注意不要删除换行符或任何其他字符 - 例如,如果您是调用source.getLines.mkString您将丢失换行符,这意味着您将看不到与驱动程序类which uses Guava's ByteStreams.toByteArray相同的结果。