2013-06-03 3 views
0

유감스럽게도 What is the correct way of calculating a large CRC32은 크기가 1kb 인 파일 < = x < = 128kb에 대한 crc 계산 방법을 이해하는 데 충분하지 않습니다. mhash 라이브러리는이 문제를 숨기고 따라서 적절하고 편리합니다. 그럼에도 불구하고 많은 crcs를 하나의 방법으로 결합하는 방법을 설명하겠습니다.Req : 대용량 파일의 CRC를 계산하는 방법에 대한 자세한 내용

아마도 이것은 잘못된 질문입니다 (내 무지의 척도가 될 것입니다). 그러나 구체적으로 이전 반복에서 계산 된 crc를 처리 할 다음 블록 앞에 추가하는 것이 합법적입니까? 그것은 전체 계산을 심각하게 느리게하지 않으며 그렇지 않으면 무언가가 아닌 데이터에 새로운 예외를 잠재적으로 도입하지는 않습니까? TIA

답변

2

선행은 없습니다. 통상적 인 접근법은 CRC 루틴이 마지막 블록의 마지막에서 실행중인 CRC를 다음 블록의 시작 CRC로 취하는 것이다. 나는. crc = crc32(crc, buf, len);. 처음 CRC가 처음 호출 될 때 (일반적으로) 0이므로 crc = crc32(0, firstbuf, firstlen);입니다.

여러 코어에 대해 CRC를 계산하려면 0으로 평행하게 계산 된 CRC를 모두 시작 지점으로 결합하는 데 더 복잡한 절차가 필요하지만 CRC가 적절한 시작점과 일련의 작업을 수행합니다. zlib는이 목적으로 crc32_combine() 루틴을 제공합니다. 자세한 내용은 zlib manual을 참조하십시오.

+0

감사합니다, 애들러. (나는 대답을 투표 할 수 없다. 대표는 없다.) – Shellsunde

+0

대답을 수락 할 수 있습니다. –