반응형
일하면서 필요한 코드가 있어 구현해보았다.
코드의 구현 목적은 다음과 같다.
- 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)
코드를 실행한 결과는 다음과 같다.
매번 비슷한 코드를 만드는 것이 귀찮아서 기억할 목적으로 기록함
반응형
'프로그래머의 지혜 > Python_파이썬' 카테고리의 다른 글
[재테크 파이썬] 금융감독원 전자공시 분석기 만들기 - 0 (0) | 2023.04.29 |
---|---|
python으로 구현한 자동캡처 프로그램 feat. PySide6 (0) | 2023.04.28 |
파이썬(python)으로 이미지파일 PDF로 변환 (0) | 2023.04.17 |
ntlib를 이용한 NTP에서 시간 가져오기 (0) | 2021.11.22 |
파이썬 프로그래밍 도움글 (0) | 2019.01.17 |