从字符串中读取字节为浮点数

qua*_*ano 1 python string byte

我有一个python webserver,其中小的二进制文件是POST:ed.发布的数据表示为字符串.我想检查这些字符串的内容.但要做到这一点,我需要将每4个字节转换为浮点数(小端).你是怎样做的?

unw*_*ind 7

您使用struct模块:

>>> import struct
>>> struct.unpack_from("f", "\43\a3\12\32")
(8.6198787687447256e-33,)
Run Code Online (Sandbox Code Playgroud)


Ale*_*lli 5

虽然struct最好是解压缩"标量"二进制值的集合,但当你拥有的是一个接一个的字符串中的4字节二进制浮点序列时,阵列模块是理想的.具体来说,它很简单:

import array
thefloats = array.array('f', thestring)
Run Code Online (Sandbox Code Playgroud)

如果只有部分thestring包含4字节二进制浮点数的序列,则可以使用相应的字符串切片而不是整个字符串从该部分构建数组.该array实例提供了大部分功能list(加上方便的方法转换为/从字节串转换,如果需要,可以在little-endian和big-endian形式之间进行交换),但它不太灵活(只有浮点数可以在数组中)并且极大地更紧凑(可以占用比具有相同项目的列表少3-4倍的内存).