确定8位模256校验和形式的ascii字符串[-Python]

时间:2018-06-27 13:11:10

标签: python hex ascii checksum modulo

我想确定ASCII字符串的8位模256校验和。我知道公式是:

checksum = (sum of bytes)%256

如何在python中做到这一点(操作字节)?如果我以字符串'1c03e8'开头,则应输出0x94。主要问题是我不确定如何找到ASCII字符串的字节总和。这是我要寻找的主要思想:

https://www.scadacore.com/tools/programming-calculators/online-checksum-calculator/

它具有CheckSum8 Modulo 256

我尝试过:

component = ('1c03e8') 
for i in range(len(component)):
            checksum.append(int(float(component[i].encode("hex"))))
            print checksum
    print hex(int(sum(checksum)%256))

这虽然给了我0x52

2 个答案:

答案 0 :(得分:1)

您需要将字符串编码为ASCII,因为正如您所说的,这是一个ASCII字符串。

示例,快捷解决方案:

print(hex(sum('1c03e8'.encode('ascii')) % 256))

答案 1 :(得分:0)

def calc_checksum(s):
    sum = 0
    for c in s:
        sum += ord(c)
    sum = sum % 256
    return '%2X' % (sum & 0xFF)


print calc_checksum('1c03e8'.encode('ascii'))