0

我有以下代码:

$send1 = 0x01;
$send2 = 0x03;
$send3 = 0x00;
$send4 = 0x00;

我这样发送:

socket_write($spawn, $send1, strlen ($send1)) or die("Could not write output\n");
socket_write($spawn, $send2, strlen ($send2)) or die("Could not write output\n");
socket_write($spawn, $send3, strlen ($send3)) or die("Could not write output\n");
socket_write($spawn, $send4, strlen ($send4)) or die("Could not write output\n");

接收方得到它是这样的:

$result = socket_read ($socket, 1024) or die("Could not read server response\n");
    echo "Reply From Server  :".$result;

收到的数据是:1300,如何在php中使用套接字发送和接收十六进制?

4

1 回答 1

0

PHP 没有内置的十六进制数据类型,所以当你这样做时:

$send1 = 0x01;

这被php视为整数。(尝试 var_dump(0x01),你会得到 int(1))所以你可以将数据作为字符串发送并在接收端处理它,如下所示:

$send1 = "0x01";
$send1 = "0x02";
$send1 = "0x03";
$send1 = "0x04";

或者您可以通过套接字发送整数值,然后将它们转换为十六进制值以在接收端进行处理:

$send1 = 1;
$send2 = 2;
$send3 = 3;
$send4 = 4;

在接收端:

var_dump(dec2hex($result));

(一次处理一个输入,以便您可以将它们分开)。

于 2013-07-16T19:29:19.880 回答