ip 與 整數間 的相互轉換 python實現

2021-06-20 10:24:32 字數 922 閱讀 4105

我們有時會將乙個整數與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...