将整数列表转换为 Python 中的字节数组

Convert a list of integers to a bytearray in Python

我是 Python 的新手(C 是我的主要语言),所以这可能是一个超级 basic/naive 问题。

我有两个整数列表,它们是使用以下 Python 代码生成的:

mainList = range(100)
random.shuffle(mainList)
list1 = mainList[:len(mainList)/2]
list2 = mainList[len(mainList)/2:]

基本上,我试图通过 TCP 连接发送这些列表中的每一个(list1list2),并且我想确保我只发送 50-每个字节的有效负载(每个列表包含 50 个整数)。

最好的方法是什么? bytearray() 函数是否适用于此?

您可以使用以下方法。首先使用 Python 的 struct 模块将整数列表打包成二进制,每个整数使用 4 个字节。 I 指定所需的大小,因此如果您的整数只是字节值,您可以将其更改为 B

然后使用

zipiter 从字节列表中一次抓取 50 个字节。这意味着您可以根据需要制作任何长度:

import random
import struct

main_list = range(100)
random.shuffle(main_list)

# 'I' meaning unsigned int of 4 bytes
bytes = struct.pack("{}I".format(len(main_list)), *main_list)

for send_50 in zip(*[iter(bytes)]*50):
    print len(send_50)

使用 Python 2.7

测试