我寫了2個funcs工作良好,但我想更改一部分代碼以使其效率更高,使用循環和每個8個圖表的「跳轉」。 當我運行verify_checksum
,我得到:for循環 - .split和int
AttributeError: 'int' object has no attribute 'split'
但是當我用線條與言論運行#
它正常工作。 任何想法如何修改它而不改變代碼的其他部分? (有更多的funcs與這些工作,並導致一團糟)。
我的代碼:
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
你的修復比我的更好一點。 +1。 – mgilson
你對! 我從舊文件複製..我做了什麼 – user1816377