うまく機能する2つの関数を作成しましたが、8つのグラフごとに「ジャンプ」するforループを使用して、コードの一部を変更して効率を高めたいと考えています。実行する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