在Python中将字符串转换为十六进制并通过串行发送

在Python中将字符串转换为十六进制并通过串行发送,python,python-3.x,Python,Python 3.x,我想将字符串400AM49L01转换为十六进制格式(然后转换为字节)b'x\34\x30\x30\x41\x4d\x34\x39\x4c\x30',这样我就可以用pySerial来编写它了。 我已经尝试将包含单个十六进制的列表元素(如0x31(等于4)转换为字节,但这将导致b'400AM49L01') device = '400AM49L01' device = device.encode() device = bytes(device) device = str(binascii.hexlif

我想将字符串
400AM49L01
转换为十六进制格式(然后转换为字节)
b'x\34\x30\x30\x41\x4d\x34\x39\x4c\x30'
,这样我就可以用
pySerial
来编写它了。 我已经尝试将包含单个十六进制的列表元素(如
0x31
(等于
4
)转换为字节,但这将导致
b'400AM49L01'

device = '400AM49L01'
device = device.encode()
device = bytes(device)
device = str(binascii.hexlify(device), 'ascii')
code = '0x'
text = []
count = 0
for i in device:
    if count % 2 == 0 and count != 0:
        text.append(code)
        code = '0x'
        count = 0
    code += i
    count += 1
text.append((code))
result = bytes([int(x, 0) for x in text])

真的很期待你的帮助

以下代码将给出您期望的结果

my_str='400AM49L01'
“.join(hex(ord(c))在my_str.encode()中表示c”
#输出
#'0x340X3300X300X410X4D0X340X390X4C0X300X31'
它在干什么

  • 要将字符串转换为十六进制,需要使用
    ord()
    将ascii表中的每个字符转换为整数值
  • 使用函数
    hex()
    将每个int值转换为十六进制
  • 连接使用
    join()
    生成的所有十六进制值
  • 使用
    .Encode()
    将str编码为字节

  • 问候

    请分享您迄今为止的尝试欢迎来到SOF!SOF中的问题应该有,1。你想达到什么目的?2.你面临的问题是什么?3.你方为解决该问题所做的研究工作是什么?4.共享示例代码和/或错误详细信息@曼努姆希望这有帮助。谢谢!是否有可能将字节格式化为在
    x
    前面有反斜杠,而不是在
    0
    前面有反斜杠?应该是这样的:
    b'\x02\x02\x0D\x53\x01\x34\x30\x30\x41\x4d\x34\x39\x4c\x30\x31\x00'