Могу ли я создать в Perl сообщение сетевого типа с нечетной длиной байта

#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 шестнадцатеричных символов от клиента к серверу с использованием сокет-соединения