2017-06-06 13 views

答えて

2

基本形式のIPv4アドレスは、で、ネットワークバイトオーダーの32ビット整数です。 私はあなたがバイトのシーケンスとしてそれを持っていると仮定しています(なぜなら、それはあなたが通常inet_ntopに手渡すからです)。

structモジュールとそのunpackメソッドは、 "!I"フォーマット仕様(ネットワークバイトオーダー、符号なし32ビット整数を意味します)と一緒にPython整数に変換する必要があります。このコードを参照してください。

from socket import inet_ntop, inet_pton, AF_INET 
from struct import unpack 

ip = inet_pton(AF_INET, "192.168.1.42") 
ip_as_integer = unpack("!I", ip)[0] 
print("As string[{}] => As bytes[{}] => As integer[{}]".format(
     inet_ntop(AF_INET, ip), ip, ip_as_integer)) 

あなたは可能性があり、もちろんバイト単位の整数を再構築:

ip_as_integer = (ip[0] << 24) | (ip[1] << 16) | (ip[2] << 8) | ip[3] 
関連する問題