티스토리 뷰

반응형
Rev 1.00


[C언어] Visual C++ 로, 파일의 CRC32 값 구하기.

제가 몇 년 전에 외국 사이트에서 CRC32 계산 코드를 구했는데, 실제 쓰려고 보니까 실용성에 문제가 있었습니다. 파일을 메모리에 모두 읽어들인 후에 계산하는 것이었습니다. 그래서 만약 700메가짜리 CD 이미지 파일의 CRC32를 구하려면 메모리가 700메가나 필요했습니다.

그래서 메모리에 로딩하지 않고 파일을 조금 조금씩 읽어서 계산하도록 만든 것이 아래에 소개하는 코드입니다. 버퍼로서 불과 32768 바이트만 필요합니다. 사실상 메모리를 전혀 요구하지 않는 것입니다. (삼성 이건희 회장의 얼굴이 파랗게 질릴 수도 있겠군요^^)



속도

어셈블리로 만들어진 CRC32 계산 프로그램의 속도와 같았습니다. 비주얼C/C++가 그만큼 최적화를 잘 해준다는 의미일 것입니다.

780 MB 정도의 파일을 검사하는데 약 20 초가 소요 됩니다.



호환성

ZIP 과 RAR 의 CRC32 계산 값과 동일합니다.



사용법

컴파일하면 getCRC.exe 라는 파일이 만들어집니다. 명령 프롬프트 창에서,
getCRC <파일 이름>
이런 형식으로 사용하시면 됩니다.

파일 이름에 공백이 들어 있다면 쌍따옴표로 둘러싸 주어야 합니다. 그렇지 않으면 파일을 찾지 못하고 에러(Cannot open input file)를 출력합니다:

다음의 소스 파일 2개를
getCRC.cpp // 프로그램 본체
CRC32.cpp // CRC32 알고리즘 라이브러리
같은 디렉토리에 넣고

cl getCRC.cpp

이런 명령으로 컴파일하면 됩니다.





소스 코드는 파일 다운로드 받아서 컴파일 하여 사용하시기 바랍니다.


끝.

Thank you for Reading !





반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함