gpt4 book ai didi

python - 从 Python 2.7 更改为 Python 3.7 数据后获得了额外的字母?

转载 作者:行者123 更新时间:2023-12-03 20:49:37 24 4
gpt4 key购买 nike

我正在开发一个从通过 WiFi 发送的 Android 应用程序接收字符串的程序,该程序最初是为 Python 2.7 编写的,但在添加了一些附加功能后,我将其更改为 Python 3.7。但是,进行更改后,我的数据前面有一个额外的字母,我一生都无法弄清楚为什么会这样。
这是我的代码片段,这是一个非常简单的 if 语句,用于查看从 Android 应用程序发送的命令并使用该命令控制 Raspberry Pi (4) cam (v.2)。
这部分设置连接并等待查看我发送的命令。

isoCmd = ['auto','100','200','300','400','500','640','800']

HOST = ''
PORT = 21567
BUFSIZE = 1024
ADDR = (HOST,PORT)
brightness = 50
timelapse = 0


tcpSerSock = socket(AF_INET, SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)

while True:
print ('Waiting for connection')
tcpCliSock,addr = tcpSerSock.accept()
try:
while True:
data = ''
brightness = ' '
data = tcpCliSock.recv(BUFSIZE)
dataStr = str(data[1:])
print ("Here's data ",dataStr)
if not data:
break
if data in isoCmd:
if data == "auto":
camera.iso = 0
print ('ISO: Auto')
else:
camera.iso = int(data)
print ('ISO: '), data
当我启动程序时,这是我看到的:
Waiting for connection
#If I send command '300'
Here's data b'300'
Here's data b''
Waiting for connection
我不知道为什么会有额外的 b''来自。我已经通过在数组中每个项目的开头添加“b”来测试代码,这些项目适用于我定义的任何命令,而不是用于控制 Pi 相机的任何命令,因为在开头没有额外的 b。 (这有意义吗?)我的意思是,我知道我可以毫无问题地发送命令,只是不确定如何摆脱多余的字母。如果有人能给我一些建议,那就太好了。谢谢你的帮助。

最佳答案

字节串由 b 前缀表示。
尽管您可以在打印时看到输出中的字符串,但它们本质上是字节。
要从中取出普通字符串,decode功能可以提供帮助。

dataStr.decode("utf-8")

关于python - 从 Python 2.7 更改为 Python 3.7 数据后获得了额外的字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63552087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com