我們有時會將乙個整數與ip位址進行互換,用python**實現很簡單
將乙個整數如2000000,變為乙個ip位址的方式
>>> import socket
>>> import struct
>>> int_ip = 123456789
>>> ip = socket.inet_ntoa(struct.pack('i',socket.htonl(int_ip))) #int to ip address
'7.91.205.21'
>>> socket.ntohl(struct.unpack("i",socket.inet_aton(str(ip)))[0]) #ip address to int
123456789l
其實這是進製數的轉換,我們可以自己寫**
# 整數to ip位址格式
>>> def ch1(num):
s =
for i in range(4):
num /= 256
return '.'.join(s[::-1])
>>> ch1(123456789)
'7.91.205.21'
用lambda的方式,整數toip 位址 一行**搞定
>>> ch2 = lambda x: '.'.join([str(x/(256**i)%256) for i in range(3,-1,-1)])
>>> ch2(123456789)
'7.91.205.21'
用lambda的方式,ip位址轉換到整數
>>> ch3 = lambda x:sum([256**j*int(i) for j,i in enumerate(x.split('.')[::-1])])
>>> ch3('7.91.205.21')
123456789
ip位址與整數相互轉換
1 ip位址轉成整數 原理 ip位址的每段可以看成是乙個0 255的整數,把每段拆分成乙個二進位制形式組合起來,然後把這個二進位制數轉變成整數。舉例 乙個ip位址為10.0.3.193 每段數字 相對應的二進位制數 10 00001010 0 00000000 3 00000011 193 1100...
ip位址與整數相互轉換
1 通過string的split方法按.分隔得到4個長度的陣列 2 通過左移位操作 給每一段的數字加權,第一段的權為2的24次方,第二段的權為2的16次方,第三段的權為2的8次方,最後一段的權為1 將十進位制整數形式轉換成127.0.0.1形式的ip位址 1 將整數值進行右移位操作 右移24位,右移...
IP位址與無符號整數值相互轉換
方法1 然後通過unsigned int nresult a 3 24 a 2 16 a 1 8 a 0 得到乙個無符號32位整數。得到4段8位的二進位制數,把這些二進位制數轉換成整數 include include using namespace std unsigned int iptovalu...