如何在 python3 中更快地将可变长度字节(小于 8)转换为 long long int?
How to turn variable length bytes(less than 8) to long long int faster in python3?
我试过使用 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'))
但是太slow.How让它变快了?
我以前觉得太复杂了。直接计算更快。
def func(rawData):
sum = 0
for i in rawData[::-1]:
sum += i
sum <<= 8
sum >>= 8
return sum
我试过使用 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'))
但是太slow.How让它变快了?
我以前觉得太复杂了。直接计算更快。
def func(rawData):
sum = 0
for i in rawData[::-1]:
sum += i
sum <<= 8
sum >>= 8
return sum