Как перевести 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