[Perl] Формирование строки (HEX)

Модератор: Модераторы разделов

Ответить
Sinot
Сообщения: 2

[Perl] Формирование строки (HEX)

Сообщение Sinot »

Приветствую всех!

Мне нужно получить строку вида:

Код:

my $login = "\x02\x00\x05\x00\x53\x00\x69\x00\x6e\x00\x6f\x00\x74";

Первые два символа ("\x02\x00") я выбираю сам,
третий символ ("\x05") - количество оставшихся символов,
а оставшиеся символы ("\x00\x53\x00\x69\x00\x6e\x00\x6f\x00\x74"), полученные в ходе выполнения скрипта - некая строка в UTF8 (в данном случае "Sinot").

Собственно вопрос в том, как эту строку сформировать?
Или по другому: как преобразовать

Код:

my $a = "Sinot"; в my $b = "\x00\x53\x00\x69\x00\x6e\x00\x6f\x00\x74"; и my $c = 5; в my $d = "\x05";

Спасибо.

P.S. $login в таком виде полетит на сервер через IO::Socket::INET (TCP).
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: [Perl] Формирование строки (HEX)

Сообщение drBatty »

Sinot писал(а):
06.02.2012 22:51
полученные в ходе выполнения скрипта - некая строка в UTF8 (в данном случае "Sinot").

Sinot писал(а):
06.02.2012 22:51
"\x00\x53\x00\x69\x00\x6e\x00\x6f\x00\x74";

это UTF-16 ващето.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: [Perl] Формирование строки (HEX)

Сообщение NickLion »

Вроде то, что надо?

Код: Выделить всё

nicklion@warlock:~> perl -e 'use Encode qw/encode/;$a="Sinot";$c=length $a; print "\x02\x00" . chr( $c ) . encode("UTF-16BE", $a)' | hexdump -C
00000000  02 00 05 00 53 00 69 00  6e 00 6f 00 74           |....S.i.n.o.t|
0000000d
Спасибо сказали:
Sinot
Сообщения: 2

Re: [Perl] Формирование строки (HEX)

Сообщение Sinot »

drBatty писал(а):
06.02.2012 23:51
это UTF-16 ващето.

А ведь точно! Позор мне.

NickLion писал(а):
07.02.2012 00:22
Вроде то, что надо?

Да! Спасибо большое.
Спасибо сказали:
Ответить