Hướng dẫn python convert subnet mask to cidr - python chuyển đổi mặt nạ mạng con thành cidr

Làm cách nào tôi có thể chuyển đổi mặt nạ mạng con IPv4 sang ký hiệu CIDR bằng thư viện

>>> from ipaddress import IPv4Network
>>> IPv4Network('0.0.0.0/255.255.255.0').prefixlen
24
0? Ví dụ:
>>> from ipaddress import IPv4Network
>>> IPv4Network('0.0.0.0/255.255.255.0').prefixlen
24
1
Example:
>>> from ipaddress import IPv4Network
>>> IPv4Network('0.0.0.0/255.255.255.0').prefixlen
24
1

Hướng dẫn python convert subnet mask to cidr - python chuyển đổi mặt nạ mạng con thành cidr

Đã hỏi ngày 28 tháng 6 năm 2016 lúc 20:19Jun 28, 2016 at 20:19

1

Sử dụng

>>> from ipaddress import IPv4Network
>>> IPv4Network('0.0.0.0/255.255.255.0').prefixlen
24
0:

>>> from netaddr import IPAddress
>>> IPAddress('255.255.255.0').netmask_bits()
24

Sử dụng

>>> from ipaddress import IPv4Network
>>> IPv4Network('0.0.0.0/255.255.255.0').prefixlen
24
3 từ stdlib:

>>> from ipaddress import IPv4Network
>>> IPv4Network('0.0.0.0/255.255.255.0').prefixlen
24

Bạn cũng có thể làm điều đó mà không cần sử dụng bất kỳ thư viện nào: Chỉ cần đếm 1 bit trong biểu diễn nhị phân của Netmask:

>>> netmask = '255.255.255.0'
>>> sum(bin(int(x)).count('1') for x in netmask.split('.'))
24

Đã trả lời ngày 28 tháng 6 năm 2016 lúc 20:40Jun 28, 2016 at 20:40

Eugene Yarmasheugene YarmashEugene Yarmash

135K38 Huy hiệu vàng311 Huy hiệu bạc367 Huy hiệu đồng38 gold badges311 silver badges367 bronze badges

2

Sử dụng chức năng sau. Nó nhanh, đáng tin cậy và không sử dụng bất kỳ thư viện nào.

# code to convert netmask ip to cidr number
def netmask_to_cidr(netmask):
    '''
    :param netmask: netmask ip addr (eg: 255.255.255.0)
    :return: equivalent cidr number to given netmask ip (eg: 24)
    '''
    return sum([bin(int(x)).count('1') for x in netmask.split('.')])

Hướng dẫn python convert subnet mask to cidr - python chuyển đổi mặt nạ mạng con thành cidr

Đã trả lời ngày 10 tháng 5 năm 2017 lúc 7:15May 10, 2017 at 7:15

Hướng dẫn python convert subnet mask to cidr - python chuyển đổi mặt nạ mạng con thành cidr

>>> IPNetwork('0.0.0.0/255.255.255.0').prefixlen
24

Đã trả lời ngày 15 tháng 8 năm 2016 lúc 16:43Aug 15, 2016 at 16:43

Hướng dẫn python convert subnet mask to cidr - python chuyển đổi mặt nạ mạng con thành cidr

Derek Chadwellderek ChadwellDerek Chadwell

6661 Huy hiệu vàng7 Huy hiệu bạc21 Huy hiệu đồng1 gold badge7 silver badges21 bronze badges

Làm thế nào về cái này? Nó không cần bất kỳ thư viện bổ sung là tốt.

def translate_netmask_cidr(netmask):
    """
    Translate IP netmask to CIDR notation.
    :param netmask:
    :return: CIDR netmask as string
    """
    netmask_octets = netmask.split('.')
    negative_offset = 0

    for octet in reversed(netmask_octets):
        binary = format(int(octet), '08b')
        for char in reversed(binary):
            if char == '1':
                break
            negative_offset += 1

    return '/{0}'.format(32-negative_offset)

Nó theo một số cách tương tự như cách tiếp cận của IAmsurajbobade nhưng thay vào đó, việc tra cứu đã đảo ngược. Nó đại diện cho cách tôi sẽ thực hiện chuyển đổi thủ công bằng bút và giấy.

Đã trả lời ngày 17 tháng 10 năm 2018 lúc 9:02Oct 17, 2018 at 9:02

Hướng dẫn python convert subnet mask to cidr - python chuyển đổi mặt nạ mạng con thành cidr

kb-0kb-0kb-0

Phù hiệu bằng đồng 9855 bronze badges

Kể từ Python 3.5:

ip4 = ipaddress.IPv4Network((0,'255.255.255.0'))
print(ip4.prefixlen)
print(ip4.with_prefixlen)

sẽ in:

24 0,0.0.0/24
0.0.0.0/24

Đã trả lời ngày 20 tháng 2 năm 2019 lúc 22:41Feb 20, 2019 at 22:41

Gerardwgerardwgerardw

5.40142 Huy hiệu bạc38 Huy hiệu đồng42 silver badges38 bronze badges

Python ngày 28 tháng 9 năm 20201 phút September 28, 2020 1 Minute

Lấy một ví dụ về mặt nạ mạng con này 255.255.255.240 mà biểu diễn CIDR là 28. Đây là các phương pháp để chuyển đổi thành biểu diễn CIDR mà không cần sử dụng bất kỳ mô -đun nào.

  • Chia netmask bằng các dấu chấm, để mỗi octet nằm trong một danh sách.
  • Đối với mỗi mục trong danh sách, hãy sử dụng hàm bin để lấy biểu diễn nhị phân của mỗi octet, hãy nhớ gõ mỗi octet từ chuỗi đến int (), bin () chỉ có thể chấp nhận đối tượng int ().
  • Sau đó, sử dụng hàm str () Để chuyển đổi đối tượng bin để sử dụng phương thức đếm, phương thức đếm được sử dụng để đếm số lượng của 1 1 trong nhị phân.
  • Sau đó tổng hợp số lượng của 1 1 s trong danh sách.

netmask = "255.255.255.240"
list_mask = netmask.split(".")

Kết quả sau khi chia tay là như thế này: [‘255,‘ 255, ‘255,‘ 240,]]

processing = list()
for octet in lst_mask:
    processing.append(str(bin(int(octet))).count("1")) 

Kết quả của đối tượng xử lý là: [8, 8, 8, 4]

Sau đó tổng hợp các số nguyên trong danh sách.

Kết quả là 28.

Toàn bộ mã có thể được đơn giản hóa với danh sách hiểu như thế này:

sum([str(bin(int(octet))).count("1") for octet in netmask.split(".")])

Xuất bản ngày 28 tháng 9 năm 2020 September 28, 2020

bài chuyển hướng

Làm thế nào để tôi có được Netmask trong Python?

Làm thế nào để có được hostmask/netmask cho độ dài tiền tố đã cho trong Python..
Nhập iPaddress ..
# Nhận Netmask cho tiền tố A /112 ..
địa chỉ IP.Ipv6network ("::/112"). Netmask ..
# Nhận mặt nạ máy chủ cho tiền tố A /112 ..
địa chỉ IP.Ipv6network ("::/112"). Hostmask ..

Địa chỉ IP tùy ý là gì?

Phạm vi địa chỉ IP tùy ý Bạn có thể biểu diễn phạm vi địa chỉ IP tùy ý bằng địa chỉ giới hạn dưới và trên dưới dạng đối tượng iprange.>>> r1 = iprange ('192.0.2.1', '192.0.2.15') >>> r1 iprange ('192.0.2.1', '192.0.2.15').using a lower and upper bound address in the form of an IPRange object. >>> r1 = IPRange('192.0.2.1', '192.0.2.15') >>> r1 IPRange('192.0.2.1', '192.0.2.15') You can iterate across and index these ranges just like and IPNetwork object.