将PHP字符串转换为二进制格式,并在连接到服务器时重新转换它们


Converting PHP strings to binary format and reconverting them when connecting to server

我希望编写一个php脚本,该脚本将使用二进制协议连接到服务器,发送查询并从中接收数据。我想知道如何在php中实现这一点?到目前为止,我有:

<?php
$fp = fsockopen("111.111.10.10", "2222", $errno, $errstr, 10);
if (!$fp) {
    echo "$errstr ($errno)<br />'n";
} else {
    fwrite($fp, "You message");
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}
?>

当我说二进制时,我不是指计算机语言的基础,我是指发送到服务器的特定字符串应该转换为"0101001",因为这是服务器读取和转换信息的方式。我需要一种方法来转换php字符串到这种格式,并重新转换回来。

如果你不完全理解这个问题,我来解释。

要从字符串创建二进制字符串,需要几个步骤。首先将所有字符更改为数字ord(),然后将数字转换为十进制decbin。我还使用str_pad使其每个字符有8位。

我为可读性添加了一个间隔符

<?php
$str = 'Hello world';
$l = strlen($str);
$result = '';
while ($l--) {
    $result = str_pad(decbin(ord($str[$l])), 8, "0", STR_PAD_LEFT) . ' - ' . $result;
}
print $result;
//01001000 - 01100101 - 01101100 - 01101100 - 01101111 - 00100000 - 01110111 - 01101111 - 01110010 - 01101100 - 01100100
?>

使用pack和unpack转换成/从二进制

它们已经是二进制表示了。通过fwrite将它们传输到服务器应该足够了。

套接字的另一端将接收二进制字符串并按原样处理。