PHP的转换字符串十六进制不编码

时间:2019-01-05 12:54:34

标签: php string utf-8 encode

我收到这样的数据:

$string = "\x01\x03\r\x08\xc0";

如何通过此变量(用echo输出相同的值?

例如在python上,当我键入:

$ print [string]

我明白了

["\x01\x03\r\x08\xc0"]

注意: 如果我不使用$string = '\x01\x03\r\x08\xc0',因为我使用的是服务器来接收数据,而字符串变量是数据。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

当php解释器到达该行时:

$string = "\x01\x03\r\x08\xc0";

它自动解析双引号之间的字符串。所以你不能得到真正的字符串。但是,如果可以保证得到的响应是有效的十六进制,请使用bin2hex()函数。在这种情况下,您可以将该函数的结果转换为所需的结果。像这样:

$str = bin2hex($hex);
$real_str = '';
for($i=0; $i<strlen($str); $i+=2){
    $real_str .= '\\x'.$str[$i].$str[$i+1];
 }
 echo $real_str;