我正在通过串行通信接收字节数组,并将字节数组的一部分转换为整数。代码如下:
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
简而言之,我将字节数组data
从位置8开始解压缩,直到遇到定界符为止b'\x03'
。因此,我要解压缩1到3个数字的整数,然后将数字值放入value
。
这种蛮力方法有效。但是,是否有更优雅的方法可以在Python中实现呢?我是该语言的新手,并且想学习做这些事情的更好方法。
您可以找到定界符,将字节数组的子字符串转换为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中应该几乎没有变化。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句