Heim >Backend-Entwicklung >PHP-Tutorial >PHP implementiert die String-Konvertierungsmethode, ohne integrierte Funktionen zu verwenden
Wenn wir Zahlen vom Typ PHP-String in Ganzzahlen umwandeln möchten, verwenden wir normalerweise die integrierte API des Systems, um die Konvertierung durchzuführen. Wenn die Vorschriften es uns jedoch nicht erlauben, die integrierte API des Systems zum Konvertieren zu verwenden, Wir müssen es selbst tun. Was muss ich tun, um eine Funktionskonvertierung zu implementieren? 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)
Verwendung der ASCII-Code-Methode
Nachfolgend verwenden wir die ASCII-Code-Methode, um die Konvertierung durchzuführen , weil Jedes Zeichen entspricht einem ASCII-Code. Beim Addieren, Subtrahieren, Multiplizieren und Dividieren dieses Zeichens wird tatsächlich der ASCII-Code addiert, subtrahiert, multipliziert und dividiert, dh eine Ganzzahloperation, die schließlich eine Ganzzahl zurückgibt Nummer.
-Das Bild wird aus dem Internet übertragen-
Auf dem Bild oben können Sie sehen, dass die ASCII-Codes der Zeichen „0“ ~ '9' sind 48~57, die wir bei der Konvertierung verwenden. Subtrahieren Sie '0' von jedem Zeichen. Beispiel: '1' - '0' = 1, '2' - '0' = 2. Der Rückgabewert ist ein Int-Typ. Weitere Informationen finden Sie in der Code-Implementierung unten zur
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)string2ll-Funktion
Verwandte Empfehlungen:
#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; }
sql CONVERT() String to Integer Date Character Type
Das obige ist der detaillierte Inhalt vonPHP implementiert die String-Konvertierungsmethode, ohne integrierte Funktionen zu verwenden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!