擅长:python、mysql、java
<p>我猜这个问题与<a href="https://stackoverflow.com/questions/1591920/python-binary-data-reading">this one</a>有关,您使用的是4个字节而不是8个十六进制数字。</p>
<p><code>"\x41\x91\x33\x33"</code>是一个4字节的字符串,即使它看起来像16</p>
<pre><code>>>> len("\x41\x91\x33\x33")
4
>>> import struct
>>> struct.unpack(">fff","\x41\x97\x33\x33\x41\x99\x5C\x29\x47\x0F\xC6\x14")
(18.899999618530273, 19.170000076293945, 36806.078125)
</code></pre>
<p>如果确实需要处理十六进制字符串而不是实际字节,可以使用<code>struct.pack</code>来转换它,如下所示</p>
<pre><code>>>> for hx in ["41973333","41995C29","470FC614"]:
... print(struct.unpack(">f",struct.pack(">i",int(hx,16)))[0])
...
18.8999996185
19.1700000763
36806.078125
</code></pre>