我将如何转换此数据包

时间:2014-01-09 23:40:07

标签: perl packet

我该如何改变:

$sIPAddr = "37.221.175.211";                                                         
$iPort = 7777;                                                                  
$sPacket = "";                                                                 
$aIPAddr = explode('.', $sIPAddr);                                              

$sPacket .= "SAMP";                                                            

$sPacket .= chr($aIPAddr[0]);                                                   
$sPacket .= chr($aIPAddr[1]);                                                   
$sPacket .= chr($aIPAddr[2]);                                                   
$sPacket .= chr($aIPAddr[3]);                                                  

$sPacket .= chr($iPort & 0xFF);                                                 
$sPacket .= chr($iPort >> 8 & 0xFF);                                        

$sPacket .= 'c';

采用以下格式:

"\x30\x23\x02\x01\x01\x04\x06\x70\x75\x62\x6c\x69\x63\xa5\x16\x02\x02\x4e\x47"

我甚至不知道他们叫什么。

1 个答案:

答案 0 :(得分:0)

我真的不知道你为了得到这些数字做了什么。 public 内有一个字符串。

转换正常dec。数字为十六进制,您可以将sprintfprintf%x一起使用。例如:

my $sIPAddr = "37.221.175.211";
my $iPort   = 7777;
my @aIPAddr = split /\./, $sIPAddr;
print map {sprintf '\0x%x',$_ } @aIPAddr; 

输出:

\0x25\0xdd\0xaf\0xd3