从字符串中将字节读取为浮点数
我有一个用Python写的网页服务器,用户可以通过POST请求上传一些小的二进制文件。这些上传的数据是以字符串的形式表示的。我想查看这些字符串的内容。但是为了做到这一点,我需要把每4个字节转换成浮点数(小端格式)。请问该怎么做呢?
3 个回答
7
你可以使用 struct 这个模块:
>>> import struct
>>> struct.unpack_from("f", "\43\a3\12\32")
(8.6198787687447256e-33,)
5
当你需要处理一堆“标量”二进制值时,使用struct
是最合适的。但是,如果你手头有一串连续的4字节二进制浮点数,使用array模块会更理想。具体来说,使用起来非常简单:
import array
thefloats = array.array('f', thestring)
如果thestring
中的一部分包含这些4字节的二进制浮点数,你可以只用那部分来构建数组,而不是使用整个字符串。array
实例提供了大部分list
的功能(还包括一些方便的方法,可以在字节字符串之间转换,以及在小端和大端格式之间切换),但它的灵活性较差(数组中只能放浮点数),而且占用的内存要小得多(与包含相同元素的列表相比,可能节省3到4倍的内存)。