Преобразуйте строку IP-адреса в двоичный файл в Python

Как часть объемного приложения, я пытаюсь преобразовать IP-адрес в двоичный файл. Причем цель состоит в том, чтобы позже вычислить широковещательный адрес для Следа на трафике LAN. Я предполагаю, что существует намного более эффективный способ сделать это затем способ, которым я думаю. Который разбивает IP-адрес октетом, добавляя 0 к началу каждого октета в случае необходимости, преобразовывая каждый октет в двоичный файл, затем комбинируя результаты. Я должен смотреть на netaddr, сокеты или что-то совершенно другое?

Пример: от 192.168.1.1 до 11000000.10101000.00000001.00000001

9
задан pizzim13 28 April 2010 в 23:37
поделиться

3 ответа

Вы думаете о чем-то подобном ниже?

ip = '192.168.1.1'
print '.'.join([bin(int(x)+256)[3:] for x in ip.split('.')])

Я согласен с другими, вам, вероятно, следует избегать преобразовать в двоичное представление для достижения желаемого.

7
ответ дан 4 December 2019 в 10:03
поделиться

Это сокет . inet_aton () что вы хотите?

7
ответ дан 4 December 2019 в 10:03
поделиться

Цель состоит в том, чтобы позже вычислить широковещательный адрес для трафика Wake on LAN

ipaddr (см. PEP 3144 ):

import ipaddr

print ipaddr.IPNetwork('192.168.1.1/24').broadcast
# -> 192.168.1.255

В Python 3.3, модуль ipaddress :

#!/usr/bin/env python3
import ipaddress

print(ipaddress.IPv4Network('192.162.1.1/24', strict=False).broadcast_address)
# -> 192.168.1.255

Чтобы точно соответствовать примеру в вашем вопросе:

# convert ip string to a binary number
print(bin(int(ipaddress.IPv4Address('192.168.1.1'))))
# -> 0b11000000101010000000000100000001
4
ответ дан 4 December 2019 в 10:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: