【问题标题】:PHP Hex String Send as SocketPHP 十六进制字符串作为套接字发送
【发布时间】:2012-06-03 11:15:00
【问题描述】:

我在字符串变量中有以下十六进制格式:

$str = "0dae28";

我想通过套接字接口将上述内容作为十六进制值(例如 0x0dae28)发送:

socket_write($spawn,$output,strlen($output));

因此,我很好奇我应该怎么做才能从$str 转到$output,以便$output 以十六进制格式的数据发送。

非常感谢任何输入。谢谢!

【问题讨论】:

  • 为什么不在前面加上0x
  • 您要发送字符串'0x0dae28',还是0x0dae28的二进制/数字值?
  • @ManseUK 我尝试执行 $str = "0x{$str}" 并发送它 - 它将作为常规 ASCII 字符串发送。我也试过“\x{$str}”。
  • @GeoPhoenix 抱歉要尝试什么?
  • @deceze 0x0dae28 的二进制值。如何将 $str(十六进制代码格式的 ASCII)中的值传递给十六进制变量。

标签: php sockets hex


【解决方案1】:

使用PHP的hex2bin()函数:

示例 #1 hex2bin() 示例

<?php
$hex = hex2bin("6578616d706c65206865782064617461");
var_dump($hex);
?>
上面的示例将输出类似于:

string(16) "示例十六进制数据"

因此,在你的情况下:

$output = hex2bin($str);

【讨论】:

  • $output 会被解释为 ASCII 还是二进制?很抱歉,目前我使用的服务器仍在使用 PHP
  • @HeruS:在您的情况下,$output 将包含三个字节 0x0dae28。你是什​​么意思“它会被解释为ASCII还是二进制”?
  • 感谢您的意见。我会尽快试试这个,让你知道它是怎么回事。谢谢。
猜你喜欢
  • 2019-02-21
  • 2013-06-07
  • 1970-01-01
  • 2017-08-27
  • 2020-11-07
  • 1970-01-01
  • 2017-03-26
  • 1970-01-01
相关资源
最近更新 更多