如何在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    

简而言之,我将字节数组data从位置8开始解压缩,直到遇到定界符为止b'\x03'因此,我要解压缩1到3个数字的整数,然后将数字值放入value

这种蛮力方法有效。但是,是否有更优雅的方法可以在Python中实现呢?我是该语言的新手,并且想学习做这些事情的更好方法。

k

您可以找到定界符,将字节数组的子字符串转换为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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章