2014-01-21 1 views
0

저는 Madcreator의 Rabinfingerprint 자바 라이브러리를 스카 프로그램 https://github.com/themadcreator/rabinfingerprint에 사용하고 있습니다.Madcreator Rabinfingerprint 명령 줄 대 java/scala 프로그램

java -jar rabinfingerprint.jar -polygen 53 
31DF3F8C7356D3 

가 다음 파일 지문 : I는 기약 53 차 다항식을 생성하는 명령 행 사용

I가 동일한 출력을 생산하는 데있어 문제는, 동일한 주어진

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 ? 
+0

명령 줄에서 파일에 지문을 실행할 때마다 동일한 결과가 생성됩니까? – dmitry

+0

동일한 다항식을 사용하면 예. –

+1

어떻게'텍스트 '를 얻었습니까? 문자열에서 줄 바꿈 등을 제거하지 않았는지 확인해야합니다. –

답변

0

예를 들어 source.getLines.mkString을 호출하면 줄 바꿈을 잃게됩니다. 즉, 드라이버 클래스 인 which uses Guava's ByteStreams.toByteArray과 동일한 결과가 표시되지 않습니다.