2016-03-24 8 views
1

Ich machte eine Übung, die ich irgendwo online sah, die aus dem Manipulieren von binären Sequenzen bestand (zum Beispiel das Tauschen jedes durch eine Null und jede Null für eins), an irgendeinem Punkt im Code, wollte ich 0101 so drucken:Wie umgehen Sie die Identifizierung der Basis-8-Nummer in Python?

Und die Ausgabe war 65 statt 0101, ich entdeckte, dass dies, weil die 0 im Anfang einer Ganzzahl eine Basis-8-Nummer identifiziert, wie kann ich das umgehen?

+2

Nicht 0 am Anfang einer Zahl eingeben. – kindall

+1

Verwenden Sie Python 3 (dann erhalten Sie einen Syntaxfehler, ist weniger verwirrend). Ist "seq" auch eine Nummer? Ist der numerische Wert von "101" signifikant, z.B. für Berechnungen verwendet? Wenn nicht, machen Sie es einfach zu einer Zeichenkette, vorausgesetzt, Sie möchten es als '0101' drucken. –

Antwort

1

Sie können nicht. Wenn Sie 0101 eingeben, wird automatisch der Wert von oct (101) angezeigt. Sie können es als binär speichern:

seq = 0b101 

aber das hält nicht die führende 0. Ihre beste Wette als String zu retten wäre.

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

Danke! Ich habe es versucht, es als eine Schnur zu verwenden, es funktionierte gut! – leite0407

1

Sie sollten entweder eine Zeichenfolge "0101" verwenden oder binäre 0b0101 verwenden.
Eine Zeichenkette wird gedruckt 0101 und die Binärdatei wird die Binärzahl drucken, die es darstellt (5).

1

Python hat binäre Literale, aber Sie müssen ihnen 0b voranstellen. So sollte Ihr Beispiel wie folgt aussehen:

> seq = 0b0101 
> print seq 
5 

Sie auch die binäre zurück drucken:

> print bin(seq) 
0b101 
Verwandte Themen