日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python unpack_ip地址处理每天10行python代码系列

發布時間:2023/12/4 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python unpack_ip地址处理每天10行python代码系列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????背景知識:ip地址(這里都是指的ipv4地址)是一個32位(4字節)的無符號整數。為方便記憶,把每個字節看做一個無符號數,并以.號隔開。比如常見的私有地址192.168.100.1,?dns?114.114.114.114。

????下面這段代碼,展示python如何處理ip地址的一些方法。

import?socket,?struct
'''
inet_aton:字符串轉換成一個32位的網絡字節序二進制值
inet_addr:返回值為32位的網絡字節序二進制,
inet_ntoa:將一個32位的網絡字節序二進制IPv4地址轉換成相應的點分十進制數串
'''

ip='220.170.193.10'
def?iptonum():
????nums=ip.split('.')
????num=0
????for?i?in?nums:
????????#?num<<=8
????????#?num+=int(i)
????????num?=?(num<<8)?+?int(i)
????#ip數值
????print(f"{ip}:{num}")
????print(f"十六進制:{hex(num)}")
????print(f"轉為網絡順序:socket.htonl(num)")
????print(f"網絡順序十六進制:hex(socket.htonl(num))")

if?__name__=='__main__':
????bytIp=socket.inet_aton(ip)
????print(f"字符串地址轉二進制字節數組:{bytIp}")
????#此時是網絡存儲順序?大端模式?
????ip_num=?struct.unpack("i",bytIp)[0]
????print(f"二進制字節數組轉數字:{ip_num}")
????#ntohl?網絡存儲順序轉主機存儲順序?x64為小端模式,即數據的高位存在高字節
????ip_num_little=socket.ntohl(ip_num)
????print(f"主機存儲順序:{ip_num_little}")
????iptonum()

總結

以上是生活随笔為你收集整理的python unpack_ip地址处理每天10行python代码系列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。