2016-12-18 8 views
2

をHexにそれを変換する:一つにビットの2つのリストを結合して、私は2つの「ビット」のリストを持っている

a = [1, 1, 1, 1, 0, 0, 1] 
b = [1, 0, 1, 1, 1, 1, 1] 

私が欲しいものはこれら二つのリストなどの要素賢明な表現です。:

c = 0b11101111010111 

、最終的に私は何を後にしていますが例えば16進表現に、このVAR「c」を変換することである。、 H = 0x3BD7

私が考えていることは、単に賢明なループ要素とコン猫これら2つのリスト(にあります& b)をCにするが、これは特にpythonで愚かなようだが、これを行うには他の "よりスマートな/より速い"方法があるのだろうか?

答えて

0
私は一連のビットとしてそれを解釈することにより、最終的に BitArrayとその uint方法を平らにするために、その後、 chainを二つのリストを組み合わせること zipを使用することをお勧め

:あなたのための

from itertools import chain 
from bitstring import BitArray 

a = [1, 1, 1, 1, 0, 0, 1] 
b = [1, 0, 1, 1, 1, 1, 1] 
num = BitArray(chain(*zip(a, b))).uint 
print(hex(num)) # 0x3bd7 
+0

THXコメント、 しかし私はあなたの提案は、これらの2つのリストを組み合わせると思います。リスト "a"の後ろにリスト "b"を追加してから、それを16進数に変換して0x3cdfと0x3bd7を得る理由を考えてください。 – KapaA

+0

私は、それ。 – trincot

+0

素晴らしい、今私は出発点、thx :) – KapaA

関連する問題