🛠️ToolsShed

IP地址转换器

在IPv4、IPv6、十进制、二进制和十六进制格式之间转换,显示地址类型。

常见问题

代码实现

import socket
import struct

def ip_to_int(ip: str) -> int:
    return struct.unpack("!I", socket.inet_aton(ip))[0]

def int_to_ip(n: int) -> str:
    return socket.inet_ntoa(struct.pack("!I", n))

def ip_to_hex(ip: str) -> str:
    return "0x{:08X}".format(ip_to_int(ip))

def ip_to_binary(ip: str) -> str:
    return ".".join(f"{int(o):08b}" for o in ip.split("."))

ip = "192.168.1.1"
print("Decimal:", ip)
print("Integer:", ip_to_int(ip))        # 3232235777
print("Hex:    ", ip_to_hex(ip))        # 0xC0A80101
print("Binary: ", ip_to_binary(ip))     # 11000000.10101000.00000001.00000001
print("Back:   ", int_to_ip(3232235777))

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.