2016-03-24 3 views
1

私は、コード内のsomepointでバイナリシーケンスを操作すること(例えば1つおきに0と1をスワップする)からなるオンラインのどこかを見ましたが、0101を次のように印刷したいと思いました:Pythonでbase-8番号の識別をバイパスするにはどうすればいいですか?

seq = 0101 
print seq 

出力は0101ではなく65で、これは整数の始まりの0が8進数を識別するためです。これを回避するにはどうすればよいですか?

+2

数字の先頭に0を入力しないでください。 – kindall

+1

Python 3を使用します(構文エラーが発生する場合は、あまり混乱しないかもしれません)。また、 'seq'は数字であるはずですか? "101"の数値は重要ですか?計算に使用されますか?そうでない場合は、 '0101'として印刷したいと仮定して文字列にしてください。 –

答えて

1

あなたがすることはできませんので、あなたの例は次のようになります。 0101を置くと、自動的にoct(101)の値に変換されます。

seq = 0b101 

しかし、これは先頭に0を付けないでください

seq = "0101" 
swapped = ''.join(['1' if b in '0' else '0' for b in seq]) # or maketrans 
print(swapped) # => 1010 
print(int(swapped, 2)) # => 10 
+0

ありがとう!私は文字列として使用してみましたが、うまくいきました! – leite0407

1

文字列"0101"を使用するか、バイナリ0b0101を使用する必要があります。
文字列は0101を出力し、バイナリはそのバイナリ番号(5)を出力します。

1

Pythonにはバイナリリテラルがありますが、接頭辞として0bを付ける必要があります。あなたはまた、バイナリバックを印刷することができ

> seq = 0b0101 
> print seq 
5 

> print bin(seq) 
0b101 
関連する問題