我正在使用邮差从Python发送数据到PHP服务器(用于测试目的)。以下是python的示例代码:
import json
import zlib
data = {"owner": "test"}
compressed = zlib.compress(json.dumps(data).encode("utf-8"))
print(compressed)
以上python代码的输出是:
b'xx9cxabV*(xcfK-Rxb2RP*I-.Qxaax05x004x8cx05xc7'
下面是读取这些数据的PHP代码:
echo json_decode(zlib_decode($pythonCompressedBinary), TRUE);
这是邮差
中的请求示例当我尝试在php中解码python二进制文件时,它失败并给出错误,它被视为错误。我手动把二进制字符串在我的PHP代码,它失败了。当我试图将单引号手动替换为双代码并将其保存在php中的变量中时,它会成功解码。但是当我试图用str_replace()在php中使用双引号替换单引号时,仍然解码失败。
我尝试在python中hexlify()数据,然后在php中hex2bin(),然后我能够读取二进制数据并成功解码。但我不想做十六进制过程。我想直接读取二进制并在php中解码。
请帮助我如何在php端解码这个python二进制压缩数据。
您正在发送compressed
的Python表示,而不是compressed
本身。compressed
是PHP端zlib_decode()
期望的字节序列。
不要在Python中使用print
将二进制字节转换为字符串。直接发送字节