在套接字上发送十六进制字符

Nel*_*son 0 sockets perl

我正在尝试将十六进制字符发送到套接字以指示新消息.此代码有效:

  $socket->send("\x{0B}");
  $socket->send($contents);
  $socket->send("\x{1C}");
  $socket->send("\x{0D}");
Run Code Online (Sandbox Code Playgroud)

但是,由于这发生在一个循环中,我需要变量十六进制字符,我还没弄清楚如何让它工作.这就是我尝试过的.

my $start_char = get(); # returns, for example 0B
my $end_char = get(); # 1C
my $end_seg = get(); #0D

$socket->send("\x{$start_char}");
$socket->send($contents);
$socket->send("\x{$end_char}");
$socket->send("\x{$end_seg}");
Run Code Online (Sandbox Code Playgroud)

我可以验证函数返回的变量在perl端是否正确,但服务器不接受它们作为有效字符.有关如何执行此操作的任何输入?

yst*_*sth 5

尝试...send( chr($start_char) );等等(猜测get()实际上是返回整数).如果它真的给你像"0B"这样的字符串,那么...send( chr(hex($start_chr)) );