Madcreator Rabinfingerprint командная строка против программы Java/ Scala

Я использую Java-библиотеку Rabinfingerprint от Madcreator в программе 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 ?

1 ответ

Решение

Как я отмечал в комментарии выше, если вы читаете содержимое файла в строку, вы должны быть осторожны, чтобы не убрать разрывы строк или любые другие символы - если, например, вы звоните source.getLines.mkString вы потеряете разрывы строк, что означает, что вы не увидите те же результаты, что и класс драйвера, который использует GuavaByteStreams.toByteArray,

Другие вопросы по тегам