2016-08-04 24 views
2

Diese Frage bezieht sich nicht auf die Verwendung der int Funktion, sondern eher wie es intern gemacht wird.Wie Python String in Integer konvertiert

Da der Quellcode in C ist, verstehe ich nicht, was dort vor sich geht.

Vielleicht kann jemand erklären, wie Python Zeichenfolge "123" in Ganzzahl 123 konvertieren. Welche Operationen werden dafür ausgeführt?

+4

Können Sie die C-Funktion bereitstellen, damit wir nicht selbst danach suchen müssen? –

+0

"Ich möchte verstehen, wie es funktioniert, aber ich verstehe die Sprache, in der es geschrieben ist, nicht und möchte, dass du es mir erklärst, anstatt es zu lernen", interpretierte ich diese Frage. –

+0

@ TadhgMcDonald-Jensen, bitte überlegen Sie, Ihren Interpreter zu aktualisieren – micgeronimo

Antwort

2

Wenn eine Pythonzeichenfolge in ein int konvertiert wird, z. a = int("123",10), (konvertieren Sie die Zeichenfolge "123" in eine ganze Zahl in der Basis 10) eine C-Funktion wird aufgerufen.

Zuerst überprüft er, dass die gegebene Zählbasis Base> = 2 und < = 36, oder 0 (Error anderweitig)
nächstes es ignoriert alle führenden Leerzeichen. (So ​​dass " 123" = "123"),
und prüfen, ob die Zahl als positiv markiert '+' oder negativ '-'

Wenn die Basis 0 ist, überprüft es, wenn die Zeichenfolge mit '0x','0o', '0b', '0' beginnen und legt die Basis jeweils (hexadezimal, oktal , binär, dezimal).
Beachten Sie, dass die Standardbasis 10 (Dezimal) ist, wenn keine Basis angegeben wird.

Es geht dann den Zeichen-Array in eine Reihe zu drehen, um den Algorithmus im Code Kommentar zu den sind link posted by Paul Kehrer

Leerzeichen am Ende beschrieben ist auch ignoriert, und Fehler werden, wenn needed- beispielsweise ausgelöst, wenn ein Raum ist in der Mitte der Zeichenfolge, gefolgt von einer Zahl, oder wenn es ein Nicht-Nummernzeichen gibt.

Verwandte Themen