#perl
#perl
Вопрос:
$str = "0xa"; #my hex number
$m = pack("n",hex("$str")); --> the output is 000a
$m = pack("c",hex("$str")); --> the output is 0a
Мне нужно, чтобы результат был только a
. Суть в том, что с помощью pack я могу отправлять по сокету сообщения нечетной длины (например A675
). Если я попытаюсь отправить A675B
, то с помощью pack у меня будет A6750B
Ответ №1:
A675
равно двум байтам. A675B
равно двум с половиной байтам. Сокеты не поддерживают отправку чего-либо меньшего, чем байт. Вы могли бы отправить флаг, который сообщает получателю игнорировать один фрагмент сообщения, но на этом все.
Комментарии:
1. Да, вы правы. Что я хочу сделать, так это отправить примерно 5 шестнадцатеричных символов от клиента к серверу с использованием сокет-соединения