1
我通过串行通信接收字节数组并将字节数组的一部分转换为整数。代码如下:如何在Python中更优雅地将字节数组转换为整数
data = conn.recv(40)
print(data)
command = data[0:7]
if(command == b'FORWARD' and data[7] == 3):
value = 0
counter = 8
while (data[counter] != 4):
value = value * 10 + int(data[counter] - 48)
counter = counter + 1
总之,我解压的bytearray data
起始地址为8和下去,直到我打的b'\x03'
的定界符。所以我打开一个1到3位数的整数,并将数值放入value
。
这个蛮力方法的作品。但是在Python中有更好的方法吗?我对这门语言很陌生,并且想要学习更好的方法去做这些事情。
感谢您的代码。当我尝试,我得到了以下错误: builtins.ValueError发生 消息:无效的文字为int()与基地10:“b'0'” – Daanii
我想你说'return int(str(ba [0:i]))'有这个ValueError。如果是这样,听起来好像你的'data'(来自'conn.recv')包含四个ASCII字符'b'0'',后面跟着你的分界符。 “b'0'”对于可转换为整数的字符串是无效的Python语法。我不清楚你的'conn.recv'发送给你什么语法。你从规格中知道吗?它看起来有点像它可能试图表达某种形式的二进制文字,在这种情况下只是零。您的原始代码不会引发错误,但它会告诉您“值”是49091,我确定这不是意图。 – mgkrebbs