【发布时间】:2017-08-24 11:23:06
【问题描述】:
我想计算校验和。我想做的过程如下;
第一步
a="10F8000041303131303030353000000000000000"
第二步
10+F8+00+00+41+30+31+31+30+30+30+35+30+00+00+00+00+00+00+00 = D0
第三步
~D0 = 2F -> 2F + 1 = 30
我试过了;
def calc_checksum_two(s):
return '%2X' % (-(sum(ord(c) for c in s) % 256) & 0xFF)
print(calc_checksum_two(a))
结果;
3D
【问题讨论】:
-
sum(ord(c) for c in s)在我看来不合适。如果 s 是 "10F800",这给你 ord("1") + ord("0") + ord("F") + ord("8") + ord("0") + ord("0" )。我认为这与您想要做的事情并不接近。 -
那么我怎样才能像“10+F8+00+...”一样逐字节求和
标签: python python-3.x hex ascii checksum