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

Posted

技术标签:

【中文标题】将字符串的python列表转换为字节数组【英文标题】:Convert python list of string to bytearray 【发布时间】:2016-10-17 12:41:03 【问题描述】:

我会通过 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)

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

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

感谢您的帮助!

【问题讨论】:

你试过';'.join(packet)吗? 此外,该列表具有.extend() 方法。不要写多行追加,只需使用packet.extend(['4', '81', '1', '0']) 我的问题是关于包含字符串的列表元素。例如数据包[0]、数据包[1]、数据包[2]。我正在寻找一种将列表转换为包含列表的线性字符串的方法。 【参考方案1】:

如果您想要一个实际的 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'

【讨论】:

感谢 frmdstryr!这正是我要找的!另一个问题:字符串 msg 必须以“0x02”开头并以“0x03”结尾。这是 STX 和 ETX 字节。要在 serialCom 上写入不可打印的字符,我会使用 bytearray 吗?我可以将 0x02 添加到字节数组,转换并连接 msg 最后添加 0x03 吗? 是的,您可以使用 '\x' 来创建字节。 '\x02' 和 '\x03'。

以上是关于将字符串的python列表转换为字节数组的主要内容,如果未能解决你的问题,请参考以下文章

Python - 将字节数组转换为 JSON 格式

使用校验和将字节数组转换为字符串。在 python 中重新迭代时获取额外的空字节

Java:将字节列表转换为字节数组

在 Python 3 中将二进制字符串转换为字节数组

将 JSON 数组转换为 Python 列表

python3:字节与字节数组,并转换为字符串和从字符串转换