将整数列表转换为 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 连接发送这些列表中的每一个(list1
和 list2
),并且我想确保我只发送 50-每个字节的有效负载(每个列表包含 50 个整数)。
最好的方法是什么? bytearray()
函数是否适用于此?
您可以使用以下方法。首先使用 Python 的 struct 模块将整数列表打包成二进制,每个整数使用 4 个字节。 I
指定所需的大小,因此如果您的整数只是字节值,您可以将其更改为 B
。
然后使用 zip
和 iter
从字节列表中一次抓取 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
测试
我是 Python 的新手(C 是我的主要语言),所以这可能是一个超级 basic/naive 问题。
我有两个整数列表,它们是使用以下 Python 代码生成的:
mainList = range(100)
random.shuffle(mainList)
list1 = mainList[:len(mainList)/2]
list2 = mainList[len(mainList)/2:]
基本上,我试图通过 TCP 连接发送这些列表中的每一个(list1
和 list2
),并且我想确保我只发送 50-每个字节的有效负载(每个列表包含 50 个整数)。
最好的方法是什么? bytearray()
函数是否适用于此?
您可以使用以下方法。首先使用 Python 的 struct 模块将整数列表打包成二进制,每个整数使用 4 个字节。 I
指定所需的大小,因此如果您的整数只是字节值,您可以将其更改为 B
。
zip
和 iter
从字节列表中一次抓取 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
测试