Perl hex string для двоичной строки

Я пытаюсь преобразовать строку шестнадцатеричных цифр в двоичную строку. Если моя строка ввода - 41424344, тогда я хочу, чтобы строка сохраняла "ABCD". Как это можно сделать?

3 ответа

Вы можете сделать это без использования регулярного выражения с помощью pack:

print pack 'H*', '41424344';

Вывод:

ABCD


Канонический метод

$input_string =~ s/(..)/chr(hex($1))/ge;

Это считывает два символа за раз от входа, вызывая hex (преобразование шестнадцатеричного числа в десятичное число), а затем chr (преобразование десятичного числа в символ) на каждом входе.


s/([a-f0-9][a-f0-9])/chr(hex($1))/egi;

licensed under cc by-sa 3.0 with attribution.