0

我收到这样的 ascii 字符串:

�=message :;:-RemoteCommunicationNo version set.%�?     ���2?䋹�

我必须将其解码为十六进制并使用 bin2hex。我得到这个数据:

  0da46500000810123d0a3b3a0a2d0a1352656d6f7465436f6d6d756e69636174696f6e12001a0f4e6f2076657273696f6e207365742e250000803f12090900000060a12b313f

哪个是对的。但是我只想要这个字符串的第 3-4 和第 5 个字节(65,00,00)。

将这三个字节放入变量中的最有效方法是什么?

4

1 回答 1

0

这取决于您所说的“高效”是什么意思。您的意思是对编码高效还是对性能高效?我会提供两者。

最棒的表演

这是假设您知道字符串将始终至少有 10 个字符长,并且您永远不需要第一个字符(前两个字节)。

字符串解析很昂贵,而且您不想解析整个字符串。

http://php.net/manual/en/function.substr.php

$interestingPart = substr($yourHexString, 4, 6);  
$firstByte = substr($interestingPart, 0, 2);  
$secondByte = substr($interestingPart, 2, 2);  
$thirdByte = substr($interestingPart, 4, 2);  

最容易编码

http://php.net/manual/en/function.str-split.php

$bytesArray = str_split($yourHexString, 2);  
$bytesDesired = $bytesArray[2] . $bytesArray[3] . $bytesArray[4];
于 2017-08-18T17:50:28.643 回答