国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 使用Python對IP進行轉換的一些操作技巧小結

使用Python對IP進行轉換的一些操作技巧小結

2020-08-02 10:17Python教程網 Python

這篇文章主要介紹了使用Python對IP進行轉換的一些操作技巧小結,包括使用socket模塊里的相關函數和匿名函數實現,需要的朋友可以參考下

Python Socket模塊中包含一些有用IP轉換函數,說明如下:

?
1
socket.ntohl(x)     // 類似于C語言的ntohl(x)

把32位正整數從網絡序轉換成主機字節序。

?
1
socket.ntohs(x)    // 類似于C語言的ntohs(x)

把16位正整數從網絡序轉換成主機字節序。

?
1
socket.htonl(x)     // 類似于C語言的htonl(x)

把32位正整數從主機字節序轉換成網絡序。

?
1
socket.htons(x)    // 類似于C語言的htons(x)

把16位正整數從主機字節序轉換成網絡序。

?
1
socket.inet_aton(ip_string) // 依賴于inet_aton的C實現

轉換IPV4地址字符串(192.168.10.8)成為32位打包的二進制格式(長度為4個字節的二進制字符串),它不支持IPV6。inet_pton()支持IPV4/IPV6地址格式。

?
1
socket.inet_ntoa(packed_ip)

轉換32位打包的IPV4地址為IP地址的標準點號分隔字符串表示。

?
1
socket.inet_pton(address_family,ip_string)

轉換IP地址字符串為打包二進制格式。地址家族為AF_INET和AF_INET6,它們分別表示IPV4和IPV6。

?
1
socket.inet_ntop(address_family,packed_ip)

轉換一個打包IP地址為標準字符串表達式,例如:“5aef:2b::8”或“127.0.0.1”。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
>>>import socket
>>>import struct
>>>socket.ntohl(struct.unpack("i",socket.inet_aton("10.10.58.64"))[0])
168442432L
>>>socket.inet_ntoa(struct.pack("i", socket.htonl(168442432L)))
'10.10.58.64'
>>>struct.unpack("=I", socket.inet_aton("190.10.58.64"))
(1077545662,)
>>>socket.inet_ntoa(struct.pack("=I", 1077545662))
'190.10.58.64'
# 從IP地址字符串轉換為整數值
 
defIp2Int(ip_string):
     return struct.unpack(“!I”,socket.inet_aton(ip))[0
# 從網絡字節序的數字轉換為IP地址(點號分隔)
 
def Int2Ip(ip):
     return socket.inet_ntoa(struct.pack(“!I”,ip))

也可以簡單地使用lambda函數來實現ip和數字的互轉:
ip轉數字

?
1
2
3
>>> ip2num = lambda x:sum([256**j*int(i) for j,i in enumerate(x.split('.')[::-1])])
>>> ip2num('192.168.0.1')
3232235521

通過倒序的切割索引得出每個索引位具體的值,即j,i 的值。由于數字范圍為0~255(共256個),所以再通過索引位求冪,再和本身的值求積,并求和。具體分解如下:

?
1
2
3
4
5
6
7
8
9
>>> [256**j*int(i) for j,i in enumerate(x.split('.')[::-1])]
[1, 0, 11010048, 3221225472]
>>> for j,i in enumerate(x.split('.')[::-1]):
...   print j,i
...
0 1
1 0
2 168
3 192

數字轉IP

還是上面的IP ,可以通過簡單的算法將數字再轉為IP,具體代碼如下:

?
1
2
3
>>> num2ip = lambda x: '.'.join([str(x/(256**i)%256) for i in range(3,-1,-1)])
>>> num2ip(3232235521)
'192.168.0.1

上例中先得出i 的值為[3, 2 , 1 ,0 ] ,實際上這部分得出的也是索引位的值,x 就是我們上面算到的求和后的值 3232235521 。該數分數除以256的索引位次方后,得出余數為256 ,就是每個索引位的對應值 。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 精品美女 | 99久久精品一区二区成人 | 在线中文字幕视频 | 久久99精 | 黄色免费高清网站 | 一区二区三区国产 | 国产天堂 | 激情综合丁香 | 观看av| a级在线免费 | 免费观看黄色 | 成人超碰在线 | 国产资源在线看 | 久久国产精品一区二区 | 欧美在线视频网 | 午夜电影一区 | 国产精品一区视频 | 午夜一级片 | 日韩影片在线观看 | 黄色毛片视频网站 | 黄色三及毛片 | 免费一区二区三区 | 欧美一级在线观看 | 久久精品亚洲一区二区 | av一级毛片 | 天堂精品 | 久久精品这里热有精品 | 日本高清视频网站www | 成年人视频免费在线看 | 日本在线视频一区二区 | 成人片在线播放 | 国产三级久久久久 | 亚洲免费观看视频 | h色视频在线观看 | 亚洲欧美日韩国产综合 | 狠狠操夜夜爱 | 国产噜噜噜噜噜久久久久久久久 | 午夜黄色影院 | 懂色av成人一区二区三区 | 色交视频| 人人叉人人|