确定 8 位模 256 校验和形式的 ascii 字符串 [-Python]
Determine 8 bit modulo 256 Checksum form ascii string [-Python]
我想确定 ASCII 字符串的 8 位模 256 校验和。我知道公式是:
checksum = (sum of bytes)%256
如何在 python 中执行此操作(处理字节)?如果我以字符串开头:'1c03e8',我应该输出 0x94
。主要问题是我不确定如何找到 ASCII 字符串的字节总和。这是我正在寻找的主要思想:
https://www.scadacore.com/tools/programming-calculators/online-checksum-calculator/
它有 CheckSum8 模 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
您需要将字符串编码为 ASCII,因为正如您所说,它是一个 ASCII 字符串。
示例,快速解决方案:
print(hex(sum('1c03e8'.encode('ascii')) % 256))
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'))
我想确定 ASCII 字符串的 8 位模 256 校验和。我知道公式是:
checksum = (sum of bytes)%256
如何在 python 中执行此操作(处理字节)?如果我以字符串开头:'1c03e8',我应该输出 0x94
。主要问题是我不确定如何找到 ASCII 字符串的字节总和。这是我正在寻找的主要思想:
https://www.scadacore.com/tools/programming-calculators/online-checksum-calculator/
它有 CheckSum8 模 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
您需要将字符串编码为 ASCII,因为正如您所说,它是一个 ASCII 字符串。
示例,快速解决方案:
print(hex(sum('1c03e8'.encode('ascii')) % 256))
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'))