如何在Python中更优雅地将字节数组转换为整数

时间:2014-02-22 03:54:27

标签: python integer bytearray

我通过串行通信接收字节数组,并将部分字节数组转换为整数。代码如下:

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中做到这一点?我是这门语言的新手,想学习更好的方法来做这些事情。

1 个答案:

答案 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中应该很少或根本没有变化。