2014-12-16 2 views
1
$temp = 'abc'.0x12; 
print $temp; # prints abc18 

При добавлении шестнадцатеричного значения в строку оно преобразуется в десятичное значение, а конечным результатом является строка. я хочу, чтобы значение ascii шестнадцатеричного элемента было добавлено к строке.Добавление шестнадцатеричного значения в строку

, например. 0x12 в ascii - DC2 (устройство управления 2).

+0

Вы пытались использовать 'sprintf' с соответствующим форматировщиком? В этом случае '% x' для шестнадцатеричного кода в нижнем регистре,'% X', если вы хотите заглавные шестнадцатеричные буквы. Ссылка: [http://perldoc.perl.org/functions/sprintf.html](http://perldoc.perl.org/functions/sprintf.html) –

+0

@SlyRaskal: я предоставляю $ temp в качестве входных данных для программы , который не принимает строки со специальными символами. В python я делаю «tab \ x12», который работает нормально. –

ответ

2

Я думаю, что Слай Raskal был на правильном пути, но вместо %x использования %c, так:

my $hex = 0x12; 
my $ascii = sprintf "%c", $hex; 
my $temp = 'abc' . $ascii; 

Я думаю, что это дает результат, который вы искали. Я получил его от http://www.perlmonks.org/?node_id=191039.

+0

Похоже, ali0sha дал гораздо лучший ответ! – clumb

3

Попробуйте использовать CHR:

my $a = 'abc'.chr 0x3e; 
print $a; 
Смежные вопросы