我该如何改变:
$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"
我甚至不知道他们叫什么。
答案 0 :(得分:0)
我真的不知道你为了得到这些数字做了什么。 public
内有一个字符串。
转换正常dec。数字为十六进制,您可以将sprintf
或printf
与%x
一起使用。例如:
my $sIPAddr = "37.221.175.211";
my $iPort = 7777;
my @aIPAddr = split /\./, $sIPAddr;
print map {sprintf '\0x%x',$_ } @aIPAddr;
输出:
\0x25\0xdd\0xaf\0xd3