프로그래머의 지혜/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)

 

 

 

코드를 실행한 결과는 다음과 같다.

 

 

 

매번 비슷한 코드를 만드는 것이 귀찮아서 기억할 목적으로 기록함

반응형