【问题标题】:php convert string hex without encodephp转换字符串十六进制而不编码
【发布时间】:2019-05-31 19:23:22
【问题描述】:

我收到这样的数据:

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

如何从这个变量输出(与echo)相同的值?

例如在 python 上,当我输入:

$ print [string]

我明白了

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

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

有人可以帮助我吗?

【问题讨论】:

  • 如果它非常重要,那么你应该尽你所能使问题尽可能清晰。这在我看来完全相反。
  • 尝试在你的参数上使用addslashes()函数,然后输出你的字符串。

标签: php string utf-8 encode


【解决方案1】:

当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;

【讨论】:

  • 我们可以使用 urlencode($string) 并将 '%' 替换为 '\n' 吗?
  • urlencode 函数可能表现得很奇怪,我不知道。顺便说一句,有很多解决方案。你可以一一测试。
猜你喜欢
  • 2014-03-10
  • 2020-11-07
  • 1970-01-01
  • 1970-01-01
  • 2015-04-24
  • 2021-12-26
  • 2014-03-17
  • 2018-01-31
相关资源
最近更新 更多