在python中加速int-list到二进制的转换

在python中加速int-list到二进制的转换,python,performance,python-2.7,type-conversion,Python,Performance,Python 2.7,Type Conversion,这里是Python初学者。我有一个大的数据集,开始是一个16位整数的字符串,“1,2,3,4,5”,最终需要转换成一个字节对齐的二进制文件 目前,我已将其用于以下方面: #helper function def unintlist2hex(list_input): for current in range(len(list_input)): list_input[current] = "%04X"%(int(list_input[current])) return lis

这里是Python初学者。我有一个大的数据集,开始是一个16位整数的字符串,“1,2,3,4,5”,最终需要转换成一个字节对齐的二进制文件

目前,我已将其用于以下方面:

#helper function
def unintlist2hex(list_input):
    for current in range(len(list_input)):
        list_input[current] = "%04X"%(int(list_input[current]))
return list_input

#where helper gets called in main code
for rows in dataset:
    row_list = rows.text.split(",")
    f_out.write(binascii.unhexlify("".join(unintlist2hex(row_list))))
但对于我有限的数据测试大小(大约300000整数),这运行起来相当慢。我怎样才能加快速度呢?我分析了代码,所有周期中的大部分都是在
unintlist2hex()中度过的。


请注意,我很难使用
hex()
bin()
,因为它们有截断前导零的倾向

struct模块可能是最好的选择

>>> import struct
>>> struct.pack("5I", *(int(x) for x in "1,2,3,4,5".split(",")))
'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00'

您可以使用
我认为您不了解数据是如何工作的。您正在创建包含“0”和“1”字符的字符串。这与在一个字节中设置0位和1位不同。@KarlKnechtel我正试图真正反思你在这里说的话,但没有抓住要点。设置0x0不等于创建0000字节吗?您的评论是否指向“%04X”十六进制转换?谢谢!运行代码得到了大约2倍的因子,所以这很有趣。为了繁荣而编辑:row_list=[int(x)for x in rows.text.split(“,”)啊,当然应该是一个列表理解:)
>>> struct.pack(">5I", *(int(x) for x in "1,2,3,4,5".split(",")))
'\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x05'
for rows in dataset:
    row_list = [int(x) for x in rows.text.split(",")]
    f_out.write(struct.pack("{}I".format(len(row_list)), *row_list))