12 / 12 / 1
Регистрация: 18.11.2013
Сообщений: 61
1

Выполнение методов perl pack/unpack на языке python

19.01.2017, 15:54. Показов 1659. Ответов 2
Метки нет (Все метки)

Привет!
Просьба оказать содействие, переписываю старые скрипты с perl на python, заглох на строке perl
my ($host_ip) = unpack( "N", pack( "C4", split(/\./, $ip)));

переменная $ip это обычный IP формата, например 10.4.80.71. Переменная $host_ip получает значение 168054855

Как получить этот же результат в python(2.7), ни как не получается разобраться c форматами struct.pack/unpack....

Может поможет кто? =)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.01.2017, 15:54
Ответы с готовыми решениями:

Pack и unpack
Привет ищу хорошее описание функций. Стандартные маны не добавляют понимания. вот даже при...

Функция pack/unpack в C#
Подскажите на что можно изменить функцию pack/unpack Python or PHP в данном случае: ...

Аналог PHP-функций pack/unpack
Здравствуйте. Необходима помощь с написанием аналога функций pack/unpack с PHP на C# pack —...

Python unpack('i') питоновская анпак integer моя реализация
Предыстория с задачей: Возникла задача разобрать на C# бинарный файл с данными. недолго думая...

2
13 / 13 / 10
Регистрация: 09.09.2014
Сообщений: 41
19.01.2017, 19:40 2
Это 256тиричная система счисления. 168056855 = 71 * 256^0 + 80 * 256 ^ 1 + 4 * 256 ^ 2 + 10 * 256 ^ 3
А вообще почитай документацию модуля struct.

Добавлено через 1 час 16 минут
host_ip = struct.unpack('L', struct.pack('bbbb', *map(int, ip.split('.')[::-1])))
1
12 / 12 / 1
Регистрация: 18.11.2013
Сообщений: 61
19.01.2017, 20:04  [ТС] 3
Ну у меня не сработал сразу этот пример , но суть верна, чуть-чуть изменил и все сработало корректно

На всякий случай вот пример

>>> import struct
>>> ip = '10.4.33.22'
>>> host_ip = struct.unpack('L', struct.pack('bbbb', *map(int, ip.split('.')[::-1])))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
struct.error: unpack requires a string argument of length 8
>>> host_ip = struct.unpack('>L', struct.pack('bbbb', *map(int, ip.split('.'))))
>>> host_ip
(168042774,)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.01.2017, 20:04
Помогаю со студенческими работами здесь

Аналог pack/unpuck из Python и PHP
Чем в C++ можно распаковывать бинарные данные в int/short/double? В питоне и пхп для этого есть...

Perl -e 'print pack "V", hex(<STDIN>)' > result.bin
crc32 &lt;file&gt; | perl -e 'print pack &quot;V&quot;, hex(&lt;STDIN&gt;)' &gt; result.bin Нужно всё то же самое, но с...

javascript выполнение в perl
В последнее время в качестве защиты от ботов используется javascript шифрование текстовых данных...

Как заставить Index Server из Option Pack for Windows NT 4.0 индексировать файлы на русском языке?
Как заставить Index Server из Option Pack for Windows NT 4.0 индексировать файлы на русском языке?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru