Python – Intel HEX形式のチェックサムを計算する

目的

任意でアドレスとデータを指定したものをHEXファイルに追加する際、チェックサムの計算が必要になる。今回はこのチェックサムをPythonで計算する。

コード

今回はExcelに目的のデータを書き込んである状態と仮定してそこから読み出したデータのチェックサムを計算する。Excelに書き込むデータはチェックサム以外の全ての要素を結合した以下のような形式にしておく。
:0B0010006164647265737320676170
6行目でスタートコード「:」を除いたものをrawDataとして取り込み、for文の中でそれらを2文字ごとに取り出し和を計算する。最後に -sum&0xff で和の2の補数を0b××の形でプリントしている。

import openpyxl

book = openpyxl.load_workbook('Book1.xlsx')
sheet = book.worksheets[0]

rawData = str(sheet.cell(column=1, row=1).value[1:])

print(rawData,type(rawData))
sum = 0

for i in range(len(rawData)//2):
    data = int("0x" + rawData[i*2:i*2+2],16)
    sum += data

print(hex(-sum&0xff))

コメント

タイトルとURLをコピーしました