Как преобразовать шестнадцатеричную строку в байтовую строку в Perl?

#perl #hex #packet

#perl #шестнадцатеричная #пакет

Вопрос:

Мой исходный код написан на Python, но мне нужно преобразовать его в Perl для некоторых библиотек, которых у меня нет в моем распоряжении в Python.

В Python я бы сделал это:

 packet=binascii.unhexlify('F0000000F6905C452001A8C0000000000160994E810FB54E0100DB0000000000000')
  

И

Это создаст строку, содержащую двоичное представление:

 0xF0 0x00 0x00 0x00 0xF6 0x90 0x5C 0x45 etc...
  

Теперь, когда моя строка представляет собой массив байтов, я могу отправить ее в качестве полезной нагрузки для моего пакета. Как мне это сделать на Perl?

Комментарии:

1. perldoc -f pack это достаточно хорошая отправная точка. (Извините, больше никаких подробностей, пора спать.)

Ответ №1:

Для этого вы можете использовать pack функцию.

Пример:

 $ perl -e 'print pack("H*", "303132616263"), "n";'
012abc
  

Ознакомьтесь с руководством по пакету.