Как перевести 64 отдельных бита в одно 64-битное значение?

Есть список с 64 битами, например:

bits = [1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Надо все эти биты перевести в одно 64-битное значение.


Ответы (3 шт):

Автор решения: MaxU
res = hex(int("".join(map(str, bits)), 2))

результат:

In [53]: res
Out[53]: '0xfecefefefefafc00'
→ Ссылка
Автор решения: TigerTV.ru

Еще один вариант, без преобразований в строку:

res = hex(reduce(lambda a, b: (a << 1) + b, bits))

или

res = hex(reduce(lambda a, b: a << 1 | b, bits))

или

res = hex(reduce(lambda a, b: a * 2 | b, bits))

Результат:

0xfecefefefefafc00
→ Ссылка
Автор решения: Danis

можно так:

sum(el * 2 ** i for i, el in enumerate(bits[::-1]))
→ Ссылка