python如何使用字符串比较来判断ip地址是否为多播?

How does python use string comparison to determine whether the ip address is multicast or not?

if "224.0.0.0" <= "200.110.11.11" <= "239.255.255.255":
    print("Multicast")
else:
    print("Unicast")

上面的代码似乎可以很好地找到 ip:200.110.11.11 是否是多播,字符串比较是如何工作的?这可以用作确定 IP 地址是否为多播的有效代码吗?

在 python 中,根据每个字符在 ascii table 中的位置来按字典顺序比较字符串。这意味着 python 遍历每个字符串的第一个字符并比较这些字符的 ascii 值,然后比较每个字符串的第二个字符,依此类推,直到满足运算符或到达字符串末尾。

这不适用于您的代码的所有情况,因为并非每个 ip 都会在字符串的相同索引中具有句点。要解决此问题,您可以使用 python 3.x 中的内置 ipaddress 模块,如下所示:

from ipaddress import IPv4Address

low = IPv4Address('224.0.0.0')
high = IPv4Address('239.255.255.255')

test = IPv4Address('200.110.11.11')

if low <= test <= high:
    print('Multicast')
else:
    print('Unicast')