227

整数をバイナリに変換するために、次のコードを使用しました。

>>> bin(6)  
'0b110'

「0b」を消去するときは、これを使用します:

>>> bin(6)[2:]  
'110'

の代わりに6として表示したい場合はどうすればよいですか?00000110110

4

16 に答える 16

436
>>> '{0:08b}'.format(6)
'00000110'

フォーマット文字列の部分を説明するだけです:

  • {}変数を文字列に配置します
  • 0引数位置 0 の変数を取る
  • :この変数の書式設定オプションを追加します (それ以外の場合は decimal を表します6)
  • 08数値を 8 桁にフォーマットし、左側をゼロで埋めます
  • b数値をバイナリ表現に変換します

Python 3.6 以降のバージョンを使用している場合は、f-strings も使用できます。

>>> f'{6:08b}'
'00000110'
于 2012-05-02T09:32:56.513 に答える
117

ちょうど別のアイデア:

>>> bin(6)[2:].zfill(8)
'00000110'

文字列補間による短い方法( Python 3.6+ ):

>>> f'{6:08b}'
'00000110'
于 2012-05-02T09:37:09.337 に答える
24

ちょっといじる方法…

>>> bin8 = lambda x : ''.join(reversed( [str((x >> i) & 1) for i in range(8)] ) )
>>> bin8(6)
'00000110'
>>> bin8(-3)
'11111101'
于 2012-05-02T10:07:33.847 に答える
22

フォーマット機能を使うだけ

format(6, "08b")

一般的な形式は

format(<the_integer>, "<0><width_of_string><format_specifier>")
于 2016-04-07T20:16:08.167 に答える
11

eumiroの答えはより良いですが、私はこれをバラエティーのために投稿しています:

>>> "%08d" % int(bin(6)[2:])
00000110
于 2012-05-02T09:35:17.210 に答える
6

..または、常に8桁にする必要があるかどうかわからない場合は、パラメーターとして渡すことができます:

>>> '%0*d' % (8, int(bin(6)[2:]))
'00000110'
于 2012-05-02T09:47:30.567 に答える
2

常に一定ではない変数から表すために使用される桁数を解析したいと仮定すると、numpy.binary を使用するのが良い方法です。

パワーセットにバイナリを適用するときに役立つ可能性があります

import numpy as np
np.binary_repr(6, width=8)
于 2020-03-11T13:31:12.067 に答える