[英]Convert a list of integers to a bytearray in Python
我是Python的新手(C是我的主要語言),所以這可能是一個非常基本的問題。
我有兩個用以下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測試
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.