我写了 2 个运行良好的函数,但我想更改我的部分代码以提高效率,使用 for 循环,每 8 个图表“跳转”一次。当我跑步时verify_checksum
,我得到:
AttributeError: 'int' object has no attribute 'split'
但是当我用行注释运行它时,#
它工作正常。知道如何在不更改代码其他部分的情况下修复它吗?(有更多的功能可以与这些一起使用,这会导致混乱)。
我的代码:
def xor_bytes(byte1, byte2):
byte1, byte2=byte1.split(), byte2.split()
xor=""
a=0
for i in byte1:
for j in i:
t=int(byte2[0][a])^int(j)
xor+="".join(str(t))
a+=1
return xor
def verify_checksum(datagram):
datagram=list(datagram)
org_checksum=datagram[48:56]
org_checksum="".join(org_checksum)
x=48
for i in datagram[48:56]:
datagram[x]='0'
x+=1
datagram="".join(datagram)
res=xor_bytes(datagram[0:8], datagram[8:16])
for i in (16,88,8):
res=xor_bytes(res, i)
#res=xor_bytes(res,datagram[16:24])
#res=xor_bytes(res,datagram[24:32])
#res=xor_bytes(res,datagram[32:40])
#res=xor_bytes(res,datagram[40:48])
#res=xor_bytes(res,datagram[48:56])
#res=xor_bytes(res,datagram[56:64])
#res=xor_bytes(res,datagram[64:72])
#res=xor_bytes(res,datagram[72:80])
#res=xor_bytes(res,datagram[80:88])
if res==org_checksum:
return True
else:
return False
输入:
verify_checksum("1111000000001111000011111111000001010101101010101010111001110011001000000110101101101001")
输出:
True