Python中的网络掩码前缀和点十进制格式转换

2024-05-26 09:20:14 发布

您现在位置:Python中文网/ 问答频道 /正文

在我问这个问题之前, 我在这里找到了一个相关的帖子: how to convert a bit mask prefix into a dotted-decimal notation

但是它的PHP知识。在

经过努力,我现在可以将点小数转换为前缀:

e_mask = lambda mask: sum(bin(int(i)).count('1') \
                                 for i in mask.split('.'))

print(e_mask('255.255.255.0'))  # there print `24`

但我不知道如何使用24转换为255.255.255.0。在


Tags: toconvertprefixbitmask帖子how将点
1条回答
网友
1楼 · 发布于 2024-05-26 09:20:14

作为@DanD。指出,可以很容易地将位计数转换为前缀掩码。很容易将掩码转换为四个单独的字节,然后转换为字符串:

def bits_to_mask(n):
    if n < 0 or n > 32:
        raise ValueError('Bit count must be between 0 and 32')
    mask = (~((1 << (32 - n)) - 1)) & 0xFFFFFFFF
    return '.'.join(map(str, ((mask >> (8 * i)) & 0xFF for i in range(3, -1, -1))))

[IDEOne Link]

相关问题 更多 >