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 @ 2022-03-02 16:57  ascertain  阅读(40)  评论(0编辑  收藏  举报