麻烦从python枚举格式化串行数据

时间:2015-01-14 01:26:11

标签: python serialization

所以我从twitter获得一个提及列表,并且需要知道每个提及的索引。为此,我使用:

for idx, result in enumerate(mentions, start = 48):
message = result['text']
print idx, message

返回

48 " first message" 

正如所料。但是,我需要将此索引用于某些需要将索引转换为十六进制的串行数据。所以..我用:

hidx = hex(idx)

然后返回0x30。但是我需要以“\ x30”的确切格式以某种方式得到这个结果,以便我可以使用序列来写:

serial.write("\x30")

实现这一目标的最佳方法是什么?如果我保持我的十六进制转换索引代码的方式,我得到那个讨厌的额外0和没有反斜杠导致串行代码实际写 serial.write(0x30),这不是我的需要。我希望找到一种方法,因为for循环,我会收到:

serial.write("\x30")
serial.write("\x31")
serial.write("\x32")

等。尽可能多的提及我需要。 有没有办法剥离第一个零并添加\?也许更好的方式?我是python和串口通信的新手,所以任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:1)

(假设Python 2)"\x30"是一个1字节的字符串,所讨论的字节是ASCII代码48的字节:

>>> print repr('\x30')
'0'

所以,你需要做的就是发出它serial.write(chr(idx)) - 不需要捣乱十六进制!