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