mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Sunday, April 08, 2007

Python 파이썬] 파일의 CRC32 값 구하기: File CRC 계산 소스


어떤 파일명을 명령행 옵션으로 지정해 주면 그 파일의 CRC-32 값을 구하여 출력하는 파이썬 스크립트입니다.

zlib.crc32() 함수를 이용합니다. 그런데 파일을 'rb' 이렇게 "읽기 전용 + 이진 파일" 모드로 열어야 합니다. 그냥 'r' 이렇게 열면, 이진파일의 경우 대부분 틀린 CRC 값이 나오게 됩니다.

이 스크립트로 계산하면, ZIP 이나 RAR 에서 계산된 CRC-32 값과 동일한 값이 나옵니다.

실행시 옵션으로 입력한 파일의 CRC-32 출력 예제
스크립트 파일명: example.py
#!/usr/bin/python
# -*- coding: cp949 -*-


# 32비트 unsigned 형으로 변환하는 함수 정의
def unsigned32(n):
  return n & 0xFFFFFFFFL


# 지정한 파일의 CRC-32 값 반환 함수
import zlib
def getCRC32(filename):
  try:
    crc = zlib.crc32(file(filename, 'rb').read())
    return unsigned32(crc)
  except IOError:
    print "그런 파일이 없거나, 읽기 에러입니다."
    return -1  # 에러 나면 -1 (-0000001) 반환




# 본격적인 프로그램 시작
import sys
if len(sys.argv) == 1:  # 옵션 없으면 도움말 출력하고 종료
  print "CRC를 검사할 파일명을 입력해 주세요"
  exit(1)


# CRC-32 값 출력
print "%08X" % getCRC32(sys.argv[1])




실행 결과 화면:
D:\Z>example.py
CRC를 검사할 파일명을 입력해 주세요

D:\Z>example.py game.exe
FBC6BE97

D:\Z>




파일이 아닌, 문자열의 CRC 계산: ▶▶ Python 파이썬] 문자열의 CRC32 값 구하기, String CRC 계산 함수 zlib.crc32 사용법


C언어로 구하기: ▶▶ [C언어] 비주얼C로, 파일의 CRC-32 값 구하기 (빠르고 메모리 점유 없이)




tag: python
Python | 파이썬

0 Comments:

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top