【问题标题】:Determine 8 bit modulo 256 Checksum form ascii string [-Python]确定 8 位模 256 校验和形式 ascii 字符串 [-Python]
【发布时间】:2018-06-27 13:11:10
【问题描述】:

我想确定一个 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

【问题讨论】:

    标签: python hex ascii checksum modulo


    【解决方案1】:

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

    示例,快速而肮脏的解决方案:

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

    【讨论】:

    • 我不得不进行一些修改,但这是总体思路
    【解决方案2】:
    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'))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-01
      • 2023-03-20
      • 2011-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多