我想將大字節2字節字符串轉換爲數字端口號。我已經得到了一些代碼,但我不知道它是否是正確的:開箱大字節編碼端口號
from struct import unpack
def unpack_port(big_endian-port):
return unpack("!H", big_endian-port)[0]
的端口(使用Python再版())是\ X1A \ XE1,我也得到6881這一職能的。
這是正確的嗎?
我想將大字節2字節字符串轉換爲數字端口號。我已經得到了一些代碼,但我不知道它是否是正確的:開箱大字節編碼端口號
from struct import unpack
def unpack_port(big_endian-port):
return unpack("!H", big_endian-port)[0]
的端口(使用Python再版())是\ X1A \ XE1,我也得到6881這一職能的。
這是正確的嗎?
是的,'!'
是說'網絡字節順序'的字符,而'H'
說'16位無符號整數',所以你的代碼是正確的。 6881通常是Bittorrent端口。
在這種情況下,我認爲'!'
是正確的字符。由於它是端口號,我希望你的數據來自網絡。但是,如果你知道你的數據由於某種其他原因而成爲big-endian,那麼'>'
可能更合適。他們的意思是完全一樣的東西,總是會的。這更多的是通過評論你的代碼來表示意圖而不是任何語義差異。
謝謝。只是不確定我的格式標記是否正確。 – 2010-08-08 19:06:32
「The form'!'適用於那些聲稱自己不記得網絡字節順序是大端還是小端的窮人。「 - 一點[結構文檔](http://docs.python.org/library/struct.html)幽默。 :) – Seth 2010-08-08 19:01:51