如何将Python中struct.pack生成的字节列表拆分为单个字节数组?
我来帮你搞定这个问题!你需要把每个字节串拆成单个字节的bytes对象,其实用Python的列表推导式就能轻松解决,这里有两种可行的方法:
方法一:嵌套循环遍历拆分
直接遍历原列表中的每个字节串,再逐个提取里面的字节并转成单个字节的bytes对象:
current_list = [b'\xd3\xb6\x00\x00', b'\x80\x82efre\x84\x00', b'\x01', b'\x03', b'\x00\x00', b'\x0b\x04', b'\xd8\xff'] list_i_want = [bytes([b]) for item in current_list for b in item]
方法二:先合并再拆分
先把所有字节串合并成一个完整的bytes对象,再逐个拆分单个字节:
current_list = [b'\xd3\xb6\x00\x00', b'\x80\x82efre\x84\x00', b'\x01', b'\x03', b'\x00\x00', b'\x0b\x04', b'\xd8\xff'] merged_bytes = b''.join(current_list) list_i_want = [bytes([b]) for b in merged_bytes]
两种方法得到的结果完全一致,就是你想要的list_i_want:
[b'\xd3', b'\xb6', b'\x00', b'\x00', b'\x80', b'\x82', b'e', b'f', b'r', b'e', b'\x84', b'\x00', b'\x01', b'\x03', b'\x00', b'\x00', b'\x0b', b'\x04', b'\xd8', b'\xff']
解释一下:当你迭代一个bytes对象时,会得到每个字节对应的整数数值(比如b'\xd3'迭代后得到211),所以用bytes([b])可以把这个整数转回到长度为1的bytes对象,正好符合你需要的单个字节数组格式,这样就能直接发给微控制器啦。
内容的提问来源于stack exchange,提问作者Ruben
相关产品推荐
相关产品推荐

