6

たとえば、C/に次の番号があり、バイナリ形式で出力したいと思います。C++0x0202020202ULL1000000010000000100000001000000010

助けていただけますか?

4

1 に答える 1

4

str.rstripスライス (または) とintを組み合わせて使用​​できますformat

>>> inp = '0x0202020202UL'
>>> format(int(inp[:-2], 16), 'b')
'1000000010000000100000001000000010'
# Using `str.rstrip`, This will work for any hex, not just UL
>>> format(int(inp.rstrip('UL'), 16), 'b')
'1000000010000000100000001000000010'

アップデート:

from itertools import islice
def formatted_bin(inp):
   output = format(int(inp.rstrip('UL'), 16), 'b')
   le = len(output)
   m = le % 4
   padd = 4 - m if m != 0 else 0
   output  = output.zfill(le + padd)
   it = iter(output)
   return ' '.join(''.join(islice(it, 4)) for _ in xrange((le+padd)/4))

print formatted_bin('0x0202020202UL')
print formatted_bin('0x10')
print formatted_bin('0x101010')
print formatted_bin('0xfff')

出力:

0010 0000 0010 0000 0010 0000 0010 0000 0010
0001 0000
0001 0000 0001 0000 0001 0000
1111 1111 1111
于 2013-08-12T00:23:34.543 に答える