字符串到int/float的转换在python中对raspberry pi不起作用
我试图通过mqtt将网络上的esp32中的值发送到我的RPi,然后mqtt对这些值进行评估并对其执行一些操作 我已经编写了代码,并在我的pc上进行了尝试,没有出现任何问题,但在RPi上执行完全相同的代码时,它开始吐出字符串到int/float的转换在python中对raspberry pi不起作用,python,string,floating-point,Python,String,Floating Point,我试图通过mqtt将网络上的esp32中的值发送到我的RPi,然后mqtt对这些值进行评估并对其执行一些操作 我已经编写了代码,并在我的pc上进行了尝试,没有出现任何问题,但在RPi上执行完全相同的代码时,它开始吐出ValueErrors payload = str(message.payload) payload = float(payload[2:-1]) 当像这样运行代码时,它会说: ValueError: could not convert string to float: 尝试先将
ValueError
s
payload = str(message.payload)
payload = float(payload[2:-1])
当像这样运行代码时,它会说:
ValueError: could not convert string to float:
尝试先将其转换为整数也会返回错误:
ValueError: invalid literal for int() with base 10: ''
(需要[2:-1],因为要转换的有效负载/字符串始终作为b'payload'接收)
它在pc上使用时不会抛出任何错误。我还尝试在转换字符串之前打印出字符串,这表明它们只由数字组成
我在我的pc和RPi上都运行Python3.4(也尝试了2.7,但没有成功)
我希望任何人都能向我解释这种奇怪的行为,提前谢谢
str
的正确方法string[2:-1]
为任何小于3个字符的字符串返回空字符串
int
和float
都接受表示数字的字节数组,所以您甚至不必麻烦
float(message.payload)
应该可以工作(如果它不是空的,当然代表一个数字)