0

コードをphpからpythonに変換しようとしています。バイナリリテラルのリストがあります-

['0b0', '0b0', '0b0', '0b0', '0b0', '0b0', '0b100', '0b1001100']

0000000000000000000000000000000000000000000000000000010001001100連結した場合と同じです。

int("0000000000000000000000000000000000000000000000000000010001001100",2)

与える1100

リストからこれを作成するにはどうすればよいですか。バイナリ リテラルを連結できません。

4

4 に答える 4

1
>>> l = ['0b0', '0b0', '0b0', '0b0', '0b0', '0b0', '0b100', '0b1001100']
>>> int("".join("%02x" % int(x,0) for x in l), 16)
1100

Python0b0101はバイナリ リテラルとして理解するのでint('0b0101', 0)、各部分を int に変換するために使用します。次に、便利な形式 (2 桁の 16 進数) でフォーマットし、それらを連結して、16 進整数として解釈します。

于 2012-12-09T22:33:21.147 に答える
1

要素に適切な量のゼロを埋め込むには、zfill メソッドが必要です。

li = ['0b0', '0b0', '0b0', '0b0', '0b0', '0b0', '0b100', '0b1001100']
zero_padded = [x[2:].zfill(8) for x in li]
print ''.join(zero_padded)

出力

0000000000000000000000000000000000000000000000000000010001001100
于 2012-12-09T22:35:02.203 に答える
0

を剥がすだけ0bです:

binary = ''.join(x[2:] for x in yourlist)
print binary
print int(binary, 2)
于 2012-12-09T22:29:03.547 に答える
0

これはあなたにとって十分に醜いですか:

int(''.join([i for sl in [s[2:].zfill(8) for s in l] for i in sl]),2)

(効果があるようです。)

多分これはもっと読みやすいです:

l = ['0b0', '0b0', '0b0', '0b0', '0b0', '0b0', '0b100', '0b1001100']
n = 0
for s in l:
    n = n*256 + int(s,2)
print n
于 2012-12-09T22:39:16.500 に答える