如何在python3中将变长字节(小于8)变为long long int更快?

时间:2015-05-30 08:09:55

标签: python-3.4

我试过使用while循环和struct.unpack来解决这个问题:

import struct

def func(inputBytes):
    inputBytes = bytearray(inputBytes)
    while inputBytes.__len__() < 8:
        inputBytes.append(0)
    inputBytes.reverse()
    return struct.unpack("!q", inputBytes)[0]

print(func(b'\x00\x01'))

但它太慢了。如何让它更快?

1 个答案:

答案 0 :(得分:0)

之前我认为它太复杂了。直接计算更快。

def func(rawData):
    sum = 0
    for i in rawData[::-1]:
        sum += i
        sum <<= 8

    sum >>= 8
    return sum