У меня есть Java-программа, которая выплевывает в шестнадцатеричном формате через пробел 16 необработанных пакетов, полученных по сети.Поскольку я не хочу изменять этот код, я передаю результат в сценарий Perl, который теоретически может просто unpack
this из STDIN
в распознаваемые переменные.Ниже приведен пример ввода строки в мой Perl-файл:
FF FF 09 7D 10 01 07 01 00 02 00 1D 00 00 00 00 00 06 00 07 00
|--garbage-----|c--|c--|int---|int---|int---|int---|int---|int---|int---|
(c для char / byte, int для 16-битной целочисленной переменной)
Я изначально хотел использовать unpack
Чисто разделить каждую строку ввода на переменные, которые мне нужны.Однако из-за пробела в строке я не уверен, как с ним обращаться (я могу использовать 'A' в качестве шаблона, но тогда я мог бы просто использовать split!)
Есть лиэлегантный способ использования unpack()
?Я не мастер Perl, но другой способ состоит в том, чтобы, как я уже говорил, использовать split
, а затем вручную преобразовывать каждый гекс в байт, а затем использовать битовые манипуляции и маски, чтобы получить то, что я хочу.Любые другие предложения (если unpack
не спасет день)?