格式化来自 python 枚举的串行数据时遇到问题
trouble formatting serial data from python enumeration
所以我从推特上得到了一个提及列表,并且需要知道每个提及的索引。为此,我使用:
for idx, result in enumerate(mentions, start = 48):
message = result['text']
print idx, message
哪个returns
48 " first message"
符合预期。但是,我需要将此索引用于一些需要我将索引转换为十六进制的串行数据。所以..我使用:
hidx = hex(idx)
然后 returns 0x30。但是我需要以某种方式以“\x30”的确切格式得到这个结果,这样我就可以使用串行来写:
serial.write("\x30")
完成此任务的最佳方法是什么?如果我保持我的十六进制转换索引代码不变,我会得到那个讨厌的额外 0 并且没有反斜杠导致串行代码 actually write serial.write(0x30),这不是我需要的。我希望找到一种方法,由于 for 循环,我将收到:
serial.write("\x30")
serial.write("\x31")
serial.write("\x32")
等等。根据我的需要多次提及。
有没有办法去除第一个零并添加\?也许更好的方法?我是 python 和串行通信的新手,因此非常感谢您的帮助。
(假设 Python 2)"\x30"
是一个 1 字节的字符串,所讨论的字节是 ASCII 码 48 处的字节:
>>> print repr('\x30')
'0'
因此,您需要做的就是发出它 serial.write(chr(idx))
-- 无需弄乱十六进制!
所以我从推特上得到了一个提及列表,并且需要知道每个提及的索引。为此,我使用:
for idx, result in enumerate(mentions, start = 48):
message = result['text']
print idx, message
哪个returns
48 " first message"
符合预期。但是,我需要将此索引用于一些需要我将索引转换为十六进制的串行数据。所以..我使用:
hidx = hex(idx)
然后 returns 0x30。但是我需要以某种方式以“\x30”的确切格式得到这个结果,这样我就可以使用串行来写:
serial.write("\x30")
完成此任务的最佳方法是什么?如果我保持我的十六进制转换索引代码不变,我会得到那个讨厌的额外 0 并且没有反斜杠导致串行代码 actually write serial.write(0x30),这不是我需要的。我希望找到一种方法,由于 for 循环,我将收到:
serial.write("\x30")
serial.write("\x31")
serial.write("\x32")
等等。根据我的需要多次提及。 有没有办法去除第一个零并添加\?也许更好的方法?我是 python 和串行通信的新手,因此非常感谢您的帮助。
(假设 Python 2)"\x30"
是一个 1 字节的字符串,所讨论的字节是 ASCII 码 48 处的字节:
>>> print repr('\x30')
'0'
因此,您需要做的就是发出它 serial.write(chr(idx))
-- 无需弄乱十六进制!