Beim Programmieren kommt es häufig vor, dass eine Ziffernfolge in einzelne Ganzzahlen umgewandelt werden muss. Während der Zugriff auf jedes Zeichen über den Index unkompliziert ist, kann die Konvertierung dieser Zeichen in Ganzzahlen eine Herausforderung darstellen.
Die beliebte Funktion atoi() erfordert ein String-Argument, was zu der Idee führte, jedes Zeichen in einen String umzuwandeln und dann atoi zu verwenden (). Es gibt jedoch einen direkteren und effizienteren Ansatz.
Der Schlüssel liegt darin, zu erkennen, dass die Zeichenkodierungen für Ziffern sequentiell sind. In ASCII, UTF-x und den meisten anderen Kodierungssystemen hat „0“ eine Kodierung von 48, während „9“ eine Kodierung von 57 hat.
Auf diese Weise können Sie den ganzzahligen Wert einer Ziffer extrahieren indem Sie das Zeichen von „0“ oder 48 subtrahieren. Zum Beispiel:
char c = '1'; int i = c - '0'; // i is now equal to 1, not '1'
Dies ist äquivalent zu:
char c = '1'; int i = c - 48; // i is now equal to 1, not '1'
Während beide Ausdrücke das gleiche Ergebnis liefern, wird die erste Option (c - '0') im Allgemeinen als besser lesbar angesehen.
Das obige ist der detaillierte Inhalt vonWie kann ich in C/C einzelne Ziffern einer Zeichenfolge effizient in Ganzzahlen umwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!