将发送的TCP数据转换为python中的可打印文本

我有一个通过TCP发送的'double'(来自MATLAB)的数组。将发送的TCP数据转换为python中的可打印文本

接收端(PYTHON)中,当作为字符串印刷,被示出为:

> b'?\xf0\x00\x00\x00\x00\x00\[email protected][\xc0\x00\x00\x00\x00\[email protected]`\x00\x00\x00\x00\[email protected]\x00\x00\x00\x00\[email protected]\xb0\x00\x00\x00\x00\[email protected]\x7f\xf0\x00\x00\x00\x00\[email protected]\x83\x18\x00\x00\x00\x00\[email protected]\x868\x00\x00\x00\x00\[email protected]\x87\xe0\x00\x00\x00\x00\[email protected][\x80\x00\x00\x00\x00\[email protected]@\x00\x00\x00\x00\[email protected]`\x00\x00\x00\x00\[email protected]\xa0\x00\x00\x00\x00\[email protected]\x7f\xe0\x00\x00\x00\x00\[email protected]\x83\x10\x00\x00\x00\x00\[email protected]\x860\x00\x00\x00\x00\[email protected]\x87\xd8\x00\x00\x00\x00\[email protected]\x88\x90\x00\x00\x00\x00\x00' 

如何解码此看起来相同,作为初始是可读的?

回答:

使用标准库中的struct模块来解压二进制数据。

struct.unpack函数接受两个参数,格式字符串定义二进制数据的布局和数据本身。

由于数据来自网络,我们假设网络订单(格式为!);数据是加倍的数组,因此我们将使用双精度型(格式d)。 struct模块为double定义了8的大小,而bytestring的长度为144,所以这是18倍,给出格式字符串!18d

解压数据:

>>> unpacked = struct.unpack('!18d', data) 

>>> unpacked

(1.0,

111.0,

211.0,

311.0,

411.0,

511.0,

611.0,

711.0,

764.0,

110.0,

210.0,

310.0,

410.0,

510.0,

610.0,

710.0,

763.0,

786.0)

>>>

如果这个输出是不是你可以有你期待什么,然后用一些结构模块中定义的其他格式进行实验,或者找出Matlab的串行化到底有数据通过网络传输。

以上是 将发送的TCP数据转换为python中的可打印文本 的全部内容, 来源链接: utcz.com/qa/258252.html

回到顶部