【发布时间】:2016-06-28 04:04:55
【问题描述】:
我在将通过 UART 接收的字符串转换为十进制版本时遇到了困难。我用port.read(1) 读入一个字节然后打印出来
print "%s: %s" % ( time.ctime(time.time()), str)
这将打印出与 ascii character 的十进制值匹配的预期字符。我正在发送 0 到 100 之间的已知值。我的问题是我无法将其转换为十进制值并打印它,而不是说 '*' 表示 42。我很确定默认编码/解码是正确的,因为在 python 中接收时,C 中的整数值显示正确的字符。
提到发送器是一个用 avr-gcc 编程的 AVR 微控制器也可能会有所帮助。我已经搞砸了 decode('utf8')、decode("ISO-8859-1") 和 decode("ISO-8859-2") 但我很确定这不是我想要的。我还尝试使用 int() 函数将读取的值转换为小数,但没有成功。我明白了。
ValueError: invalid literal for int() with base 10: '\xe4'
【问题讨论】:
-
您在寻找
ord(your_character)吗?ord("*")是42。如果您需要解码多个字节,我会使用struct.unpack。