将 python 字符串列表转换为字节数组

Convert python list of string to bytearray

我会通过 pySerial 在串行 COM 上写一个列表。

我创建了一个字符串列表,其中每个字符串都是一个参数,然后我将列表传递给串行写入函数。有一个错误,因为我不能直接在 serial

上写字符串列表

这是我的代码:

import datetime
import time
import sys
import serial

date = datetime.datetime.now()
dateStr = str(date.strftime('%d-%m-%Y'))
unixTime = int(time.time())
crc = str("1234")


packet = list()

packet.append('test')
packet.append(dateStr)
packet.append(unixTime)
packet.append('4')
packet.append('81')
packet.append('1')
packet.append('0')

packet.append('00.7')
packet.append('4')
packet.append('9')
packet.append('0')

packet.append('18.8')
packet.append('5')
packet.append('3')
packet.append('0')

packet.append('15.3')
packet.append('4')
packet.append('6')
packet.append('0')

packet.append('2')
packet.append('0')
packet.append('13')
packet.append('0')

packet.append('0')
packet.append('0')
packet.append('185.6')

# add semicolon between list elements
serialCOM.write(packet)

有没有办法将每个列表元素连接成一个列表或字节数组?

此外,我需要在每个列表元素之间添加一个分号。

感谢您的帮助!

如果您想要一个实际的字节数组对象,请将列表传递给字节数组构造函数。

serialCOM.write(bytearray(packet))

请注意,unixTime 未转换为字符串,因此您必须先进行转换。

但是您可能想要的(基于关于分号的评论)只是使用字符串的连接方法连接字符串,如下所示:

# Force all items in the list to be strings
msg = ';'.join(map(str,packet))
serialCOM.write(msg)

然后连接的结果是:

In[50]: ';'.join(map(str,packet))
Out[50]: 'test;17-10-2016;1476708605;4;81;1;0;00.7;4;9;0;18.8;5;3;0;15.3;4;6;0;2;0;13;0;0;0;185.6'