我通过串行通信接收字节数组,并将部分字节数组转换为整数。代码如下:
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
简而言之,我从位置8开始解压缩bytearray data
,直到我达到b'\x03'
的分隔符。所以我正在解压缩1到3位数的整数,并将数值放入value
。
这种蛮力方法有效。但是有没有更优雅的方式在Python中做到这一点?我是这门语言的新手,想学习更好的方法来做这些事情。
答案 0 :(得分:1)
你可以找到分隔符,将bytearray的子字符串转换为str然后转换为int。这是一个小功能:
def intToDelim( ba, delim ):
i=ba.find( delim )
return int(str(ba[0:i]))
您可以使用
调用value = intToDelim( data[8:], b'\x04' )
(如果那是你的分隔符,则用b'\ x03')。这适用于Python 2.7,并且在Python 3中应该很少或根本没有变化。