Wenn Sie Zahlen vom Typ PHP-String in Ganzzahlen konvertieren möchten, verwenden wir für die Konvertierung im Allgemeinen die integrierte API des Systems. Der folgende Artikel stellt Ihnen jedoch hauptsächlich vor, wie PHP keine integrierten Funktionen verwendet Das Beispiel der Methode zum Konvertieren in einen Ganzzahltyp wird im Artikel ausführlich vorgestellt.
Einführung
Wenn Sie Zahlen vom Typ PHP-String in Ganzzahlen umwandeln möchten, verwenden wir dazu im Allgemeinen die integrierte API des Systems Führen Sie eine Konvertierung durch, aber was ist, wenn wir die integrierte API-Konvertierung des Systems nicht verwenden dürfen, aber selbst eine Funktionskonvertierung implementieren dürfen? Hier sehen wir uns an, wie wir dies erreichen können.
Systemintegrierte API-Methode
$num = '345432123'; //(一) $num = (int)$num; //输出: //int(345432123) //(二) $num = intval($num); //输出: //int(345432123)
ASCII-Code verwenden
Als nächstes verwenden wir ASCII-Code zum Konvertieren, da jedes Zeichen einem ASCII-Code entspricht, wenn dieses Zeichen tatsächlich addiert, subtrahiert, multipliziert und dividiert wird Es dient dazu, Additions-, Subtraktions-, Multiplikations- und Divisionsoperationen an ASCII-Codes durchzuführen, also ganzzahlige Operationen, die schließlich eine ganzzahlige Zahl zurückgeben
-Bild aus dem Internet übertragen-.
Wie Sie auf dem Bild oben sehen können, sind die ASCII-Codes der Zeichen „0“ bis „9“ 48~57. Bei der Konvertierung subtrahieren wir „0“ von jedem Zeichen. '1' - '0' = 1 , '2' - '0' = 2 Der Rückgabewert ist ein Int-Typ, siehe Code-Implementierung unten
function convertInt($strInt = ''){ $len = strlen($strInt); $int = 0; for($i=0;$i<$len;$i++){ $int *= 10; $num = $strInt{$i} - '0'; $int += $num; } return $int; } $num = '345432123'; var_dump(convertInt($num)); //输出: int(345432123)
Eine Zeichenfolge wird auch in Redis bereitgestellt. Die Funktion zum Konvertieren in einen Ganzzahltyp erfolgt ebenfalls über ASCII-Code. Einzelheiten finden Sie im
string2ll-Funktion
#include <stdio.h> #include <limits.h> #include <string.h> /* Convert a string into a long long. Returns 1 if the string could be parsed * into a (non-overflowing) long long, 0 otherwise. The value will be set to * the parsed value when appropriate. */ int string2ll(const char *s, size_t slen, long long *value) { const char *p = s; size_t plen = 0; int negative = 0; unsigned long long v; if (plen == slen) return 0; /* Special case: first and only digit is 0. */ if (slen == 1 && p[0] == '0') { if (value != NULL) *value = 0; return 1; } if (p[0] == '-') { negative = 1; p++; plen++; /* Abort on only a negative sign. */ if (plen == slen) return 0; } /* First digit should be 1-9, otherwise the string should just be 0. */ if (p[0] >= '1' && p[0] <= '9') { v = p[0]-'0'; p++; plen++; } else if (p[0] == '0' && slen == 1) { *value = 0; return 1; } else { return 0; } while (plen < slen && p[0] >= '0' && p[0] <= '9') { if (v > (ULLONG_MAX / 10)) /* Overflow. */ return 0; v *= 10; if (v > (ULLONG_MAX - (p[0]-'0'))) /* Overflow. */ return 0; v += p[0]-'0'; p++; plen++; } /* Return if not all bytes were used. */ if (plen < slen) return 0; if (negative) { if (v > ((unsigned long long)(-(LLONG_MIN+1))+1)) /* Overflow. */ return 0; if (value != NULL) *value = -v; } else { if (v > LLONG_MAX) /* Overflow. */ return 0; if (value != NULL) *value = v; } return 1; } //-------- 执行 --------- int main(){ long long num; string2ll("345432123",strlen("345432123"),&num); printf("%d\n",num); //输出 345432123 retunr 0; }
Verwandte Empfehlungen:
sql CONVERT() string Konvertierung in Ganzzahltyp Datumszeichentyp
Das obige ist der detaillierte Inhalt vonAusführliche Erklärung, wie man in PHP einen String in einen Integer umwandelt, ohne integrierte Funktionen zu verwenden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!