我碰到代碼here的這個問題:計算校驗和。 據我所知,爲了按照TCP校驗和的要求將二進制數據結構分離爲16位字: 我重新調整w的值應當被規定爲w= ord(msg[i]) << 8 + ord(msg[i+1])
,除非字節順序必須改變。我不太確定w爲什麼會被賦值爲w = ord(msg[i]) + ord(msg[i+1]) << 8
。有什麼具體的我在這裏失蹤?在python中計算TCP校驗和
def checksum(msg):
s = 0
# loop taking 2 characters at a time
for i in range(0, len(msg), 2):
w = ord(msg[i]) + (ord(msg[i+1]) << 8)
s = s + w
s = (s>>16) + (s & 0xffff);
s = s + (s >> 16);
#complement and mask to 4 byte short
s = ~s & 0xffff
return s
請刪除'>'符號出現在你的代碼的開始。然後選擇所有代碼塊,然後按ctrl + k。它應該爲你做代碼格式。 –
我不確定我是否理解這個問題。你知道什麼是大端(第一種情況)和小端(第二種情況)是什麼意思? Avinash; – Pynchia
Avinash;謝謝你做了@Punchia:是的。味精在網絡秩序 – durga