Python: IP <=> int

 

IP -> int

复制代码
import socket

ip = '5.5.5.5'


def inet_aton(a: str):
    n = 0
    for i, v in enumerate(reversed([int(n) for n in a.split('.')])):
        n += v << (8 * i)
    return n


print(inet_aton(ip))

print(int.from_bytes(socket.inet_aton(ip), byteorder = 'big', signed = False))

print(int.from_bytes(socket.inet_pton(socket.AF_INET, ip), byteorder = 'big', signed = False))
复制代码

 

int -> IP

复制代码
import socket


def inet_ntoa(n: int):
    valor = list()
    for i in range(3, -1, -1):
        valor.append(n >> 8 * i & 0xFF)
    return '.'.join((str(b) for b in valor))


n = 84215045

print(inet_ntoa(n))
print(socket.inet_ntoa(n.to_bytes(4, byteorder = 'big', signed = False)))
print(socket.inet_ntop(socket.AF_INET, n.to_bytes(4, byteorder = 'big', signed = False)))
复制代码

 

posted @   ascertain  阅读(42)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示