float,int和str到byte数组 - python

时间:2014-10-06 18:58:57

标签: python bytearray

我需要将浮点数,整数和字符串转换为字节数组。这是Python2.7。

我知道如何使用浮点数和整数执行此操作(仅用于浮点数,例如struct.pack("{}f".format(len(float_array)), float_array)),并且使用字符串我假设只执行list((map(ord, string)) for string in str_list)

那么,如果一切都搞糊涂了,有没有办法为所有事情做到这一点。在最小的时候,我希望能够将浮动和整体混合在一起而不必遍历每一个。

如果我必须遍历每一个,我该如何快速有效地做到这一点。 (注意:我必须遍历一个数据列表 - 现在,每个数据都是float或int,但是我也知道哪个索引应该是int或float(但我不需要)要知道这一点) - 最好简单地将列表转换为另一个字节数组列表(或者实际上只是像“xasdf \ xadf \ xasdf”这样的字符串)。)

示例:[1, 1.0] ==>字节数组(或更复杂的[1, 1.0, "a"] ==> bytearray

注意:执行此操作时出错:

import struct
num_list = [1, 1.0]
num_struct = struct.pack("2f", num_list)

但不是在我这样做的时候:

import struct
num_list = [1.0, 2.0]
num_struct = struct.pack("2f", num_list)

1 个答案:

答案 0 :(得分:4)

def pack_all(lst):
    fmt = ''.join('i' if isinstance(x, int) else 'd' for x in lst)
    return struct.pack(fmt, *lst)

它处理整数和浮点数(双倍大小)。字符串可能最好单独用encode处理。