Это немного более жесткое решение, но очень вычислительно эффективный
>>> import numpy as np
>>> predefined_bytes = 2**(np.arange(32))
>>> predefined_bytes
array([ 1, 2, 4, 8, 16,
32, 64, 128, 256, 512,
1024, 2048, 4096, 8192, 16384,
32768, 65536, 131072, 262144, 524288,
1048576, 2097152, 4194304, 8388608, 16777216,
33554432, 67108864, 134217728, 268435456, 536870912,
1073741824, 2147483648])
def binary2decimal(bits,predefined_bytes):
bits = np.array(bits)
return np.sum(bits*predefined_bytes[:bits.shape[0]])
>>> binary2decimal([1,1,1,1,1,1,1,1],predefined_bytes)
255