2017-10-31 5 views
0

数値を固定長のバイナリ表現に変換しようとしています。しかし私は私の数が範囲外であっても、常に長い4ビットである文字列を必要とする、番号が完全に4ビット(0〜15)で表すことができる場合に動作数値がビット数より大きい場合に、Pythonで固定長バイナリとして数値を整形する

>>> "{0:04b}".format(number) 

用いて試みました。たとえば、

>>> "{0:04b}".format(17) 

は、 '10001'ではなく '0001'を返します。

私は、結果の文字列の最後の4ビットをインデックスすることができますが、より洗練されたソリューションがあるかどうかは疑問です。

+1

"" {0:04b} "フォーマット(数字と0xF)'が思い浮かびます。 –

答えて

0

整数変換の幅を制限する一般的な方法はありません。ただし、特定のケースで特定の方法を使用することができます。

文字列が生成された後で縮小しない場合は、入力番号を減らすことができます。あなたは整数に変換するために1回、2回formatを呼び出すことができ、あるいは

"{0:04b}".format(number & 0xF) 

一旦得られるのフィールド幅を制限するために:あなたは、下位4ビットにのみ関心があるので、& 0xfはあなたのためにそれらを分離する必要があります文字列。これはかなり読めないので、私はそれをお勧めしません:

"{0:4.4s}".format("{0:04b}".format(number)) 
関連する問題