10行Python代码教你如何处理IP地址

前言

背景知识: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}")
    #此时是网络存储顺序 大端模式?