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

标签 python python-2.7 type-conversion concatenation pyserial

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

我创建一个字符串列表,其中每个字符串都是一个参数,然后将该列表传递给串行写入函数。出现错误,因为我无法直接在串行上写入字符串列表

这是我的代码:

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)

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

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

感谢您的帮助!

最佳答案

如果您想要一个实际的 bytearray 对象,请将列表传递到 bytearray 构造函数中。

serialCOM.write(bytearray(packet))

请注意,unixTime 不会转换为字符串,因此您必须先将其转换。

但是您可能想要的(基于有关分号的注释)是使用字符串的 join 方法来连接字符串,如下所示:

# 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'

关于python - 将 python 字符串列表转换为字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40086641/

相关文章:

c# - dll 未在 python 中加载

python - 检测列表中的相同值

c++ - 如何将 CComVariant bstr 转换为 CString

python - 在 python 中使用 csv.DictReader 进行数据类型转换的最快方法

java - Struts2 转换枚举数组用单个空值填充数组

python - 为Dask分布式客户端准备数据的最佳方式

Python:wxPython:GridBagSizer 布局管理帮助

python - TensorFlow python : Accessing individual elements in a tensor

python - 如何用 Python 编写一个简单的电子邮件监听器

Python 从单个标签解析 XML 变量