【发布时间】:2016-11-02 06:33:57
【问题描述】:
我是 python 新手,但我需要在其中完成这个项目。我正在使用 telnetlib 从设备获取一些原始数据,这就是数据的样子(这只是我得到的输出的一部分,真实的大约大 10 倍)
\xc2\xb2\xdd\x0f\xc2\xb2x/\xc2\xb2\x08\xb2M\xcf\xc2\xb2\xc5S\xc2\xb2\xd6[\xc2\xb2qw\xc2\xb1\xafK\ xc2\xb1n+\xc2\xb2?\x83\xc2\xb1\xe3\xb7\xc2\xb0\xe8\x87\xc2\xb0\xf1\x8f\xc2\xb1x\xbf\xc2\xb1\xcbO\xc2\xb1 \x98\x93\xc2\xb1\xd4\xc3\xc2\xb1\xf7\x9f\xc2\xb1\xb3\x97\xc2\xb1\xe7;\xc2\xb2\x97\xcb\xc2\xb2\xd3\ xf3\xc2\xb2f\x8b\xc2\xb1\xc6\xdb\xc2\xb1\xadC\xc2\xb1t\xcf\xc2\xb1\x9c\xdf\xc2\xb1\xb7\x1b\xc2\xb1\xa3\ xc2\xb1\t_\xc2\xb1v\xc3\xc2\xb1\xeb
设备的文档说这是
原始数据:二进制。大端格式的浮点值数组(不是字符串)。
问题是如何将这些数据转换为浮点数数组?
代码:
import telnetlib
tn = telnetlib.Telnet(hostIP)
tn.read_until("connected")
tn.write("getData\r\n")
data = tn.read_until("\r\n")
print data
当我从终端执行这个脚本时,我得到一些二进制“垃圾”
²\f²▒▒²▒V²▒²▒ ³▒▒³u▒³:v³▒>³;>²W▒²O^²Xf²▒▒±▒▒²P▒²▒j²▒²▒³Pv³▒▒²▒n²:Z²▒±▒F±▒±7▒±@▒±t^±▒▒±▒▒²5:±▒"±▒~±ю±±*±▒°▒▒°{n°a▒°▒:°Q▒°[°cj°0▒¯▒▒¯▒▒r¯ޒ°▒°▒¯▒▒¯a▒¯▒°E▒°▒r°q*¯▒¯▒
如果我从 python shell 做同样的事情,我会得到 \xc2\xb2\xdd\x0f\xc2... 值
【问题讨论】:
-
你知道你会得到多少个花车吗?
struct.unpack应该能够将二进制数据转换为值元组。numpy可能也有办法做到这一点。 -
你能把你的代码贴在这里吗?也许你需要使用 numpy 或 pandas 来做。
-
@Blckknght 我不知道我得到的花车数量。当我尝试 struct.unpack('d',data) 我得到 struct.error: unpack requires a string argument of length 8
标签: python arrays binary floating-point