프로그래머의 지혜/Python_파이썬
바이너리 파일을 특정 간격마다 읽고 hex를 ASCII로 저장하는 파이썬 코드
LonleyEngineer
2025. 4. 9. 09:03
반응형
일하면서 필요한 코드가 있어 구현해보았다.
코드의 구현 목적은 다음과 같다.
- 2GBbytes의 바이너리(binary) 파일이 탐색 대상임
- 특정번지(0x800000) 번지부터 시작해서 파일의 끝(0x8000000) 주소까지
- 0x20000 번지마다 16Bytes를 읽고
- "주소값 : HEX-to-ASCII" 형태로 저장
목적에 맞는 코드는 다음과 같다.
INPUT_FILE = 'input_binary.bin'
OUTPUT_FILE = 'output_hex.txt'
START_ADDR = 0x00800000
END_ADDR = 0x80000000
STEP = 0x20000
READ_SIZE = 16 # 16 bytes per step
def format_hex_line(addr, data_bytes):
hex_strs = [f"{b:02X}" for b in data_bytes]
return f"{addr:08X}: {' '.join(hex_strs)}"
with open(INPUT_FILE, 'rb') as infile, open(OUTPUT_FILE, 'w') as outfile:
for addr in range(START_ADDR, END_ADDR, STEP):
infile.seek(addr)
chunk = infile.read(READ_SIZE)
if not chunk:
break # EOF reached
# 패딩 처리: chunk가 16바이트보다 짧으면 00으로 채움
if len(chunk) < READ_SIZE:
chunk += b'\x00' * (READ_SIZE - len(chunk))
hex_line = format_hex_line(addr, chunk)
outfile.write(hex_line + '\n')
print("Read and save complete. Output file name :", OUTPUT_FILE)
코드를 실행한 결과는 다음과 같다.
매번 비슷한 코드를 만드는 것이 귀찮아서 기억할 목적으로 기록함
반응형