網路上找半天都沒找到LRC的python 的範例,難得找到算出來也是錯的
乾脆自己寫一個
計算方式:
字符串 HEX 10 進 制
3 => 33 => 51
7 => 37 => 55
1 => 31 => 49
=============================
51+55+49 = 155
=============================
155%256=155 256-155 = 101
101轉換為16進制等於65,LRC校驗碼即為65
# 十六進制 to 十進制
def hex2dec(string_num):
return int(string_num.upper(), 16)
# 十進位制 to 十六進位制: hex()
def calcLRC(input):
#https://blog.davidou.org/archives/1780
#http://www.metools.info/code/c126.html
input.replace(" ","")#去除所有空白
b=re.findall(r'.{2}',input) #字串每兩個一組
count=0
for i in range(0,len(b)):
count=count+hex2dec(b[i])#把hex轉10進位後相加起來
deccount=256-(count % 256)#把256- (加總的去mod256 )就是LRC的答案了
lrc=dec2hex(deccount)
return lrc
我是預設輸入hex字串的
例如print(calcLRC(“FE 02 83”))
應該會吐出7D