Преобразование IP-адресов с использованием Python

Вопрос:Я хочу преобразовать ip-адрес, считанный из файла в десятичном формате (192.168.65.72), в один в двоичном формате {110000001010100001000001010001000}. Я читаю ip-адрес в десятичном формате из файла. Обратите внимание на фрагмент кода ниже. /*contains 192.168.65.72*/ filter = open("filter.txt", "r") for line in filter: bytePattern = "([01]?dd?|2[0-4]d|25[0-5])" regObj = re.compile(".".join([bytePattern]*4)) for match in regObj.finditer(line): m1,m2,m3,m4 = match.groups() print

Вопрос:

Я хочу преобразовать ip-адрес, считанный из файла в десятичном формате (192.168.65.72), в один в двоичном формате {110000001010100001000001010001000}. Я читаю ip-адрес в десятичном формате из файла. Обратите внимание на фрагмент кода ниже.

/*contains 192.168.65.72*/ filter = open(«filter.txt», «r») for line in filter: bytePattern = «([01]?dd?|2[0-4]d|25[0-5])» regObj = re.compile(«.».join([bytePattern]*4)) for match in regObj.finditer(line): m1,m2,m3,m4 = match.groups() print «%s %s %s %s» %(m1, m2, m3, m4)

Я хочу преобразовать m1, m2, m3 и m4 каждый в 8-битное двоичное значение. Я не могу понять, как это сделать. Я новичок в python. Привет всем будет благодарна.

Приветствия.

Лучший ответ:».join([ bin(int(x))[2:].rjust(8,’0′) for x in ‘123.123.123.123’.split(‘.’)]) Ответ №1

Преобразуйте IPv4-адрес из строкового формата с точками-квадратиками (например, ‘123.45.67.89) в 32-разрядный бинарный формат:

socket.inet_aton («192.168.65.72»)

Ответ №2

Если вам нужна строка, содержащая необработанные данные для 32-битного IP-адреса:

import struct struct.pack(‘4B’, *(int(x) for x in ‘123.123.123.123’.split(‘.’)))

Или, если вам нужно 32-разрядное целое, содержащее IP-адрес:

import struct struct.unpack(‘>I’, struct.pack(‘4B’, *(int(x) for x in ‘123.123.123.123’.split(‘.’)))) Ответ №3>>> bin( 192 ) ‘0b11000000’

Обработка строк делает все остальное. Обратите внимание, однако, что в IP все, кроме первых частей, могут быть равны нулю.

Оцените статью
Добавить комментарий