Вы можете сделать это следующим образом:
bits = [b'\x01', b'\x00', b'\x01', b'\x01',
b'\x01', b'\x01', b'\x01', b'\x00'] # 1011 1110 -> 0xbe
int_val = sum(bit[0] << 7-i for i, bit in enumerate(bits))
byte = bytes([int_val])
print(byte)
# b'\xbe'
Поскольку bytes
объекты ведут себя как последовательности целых чисел, мы получаем:
b'\x01`[0]
# 1
Смещаем битовые значения влево: для первого в списке i
будет 0, поэтому оно сдвигается на 7 позиций и так далее.Затем мы суммируем эти значения, чтобы получить числовое значение вашего байта.
bytes()
принимает последовательности целых чисел, поэтому мы передаем ему список с нашим байтовым значением в качестве единственного элемента.