Ausführliche Erklärung, wie man in PHP einen String in einen Integer umwandelt, ohne integrierte Funktionen zu verwenden

墨辰丷
Freigeben: 2023-03-27 06:44:01
Original
1522 Leute haben es durchsucht

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)
Nach dem Login kopieren

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} - &#39;0&#39;;   
  $int += $num;  
 }

 return $int;  
}

 $num = &#39;345432123&#39;; 
 var_dump(convertInt($num)); //输出: int(345432123)
Nach dem Login kopieren

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] == &#39;0&#39;) {
  if (value != NULL) *value = 0;
  return 1;
 }

 if (p[0] == &#39;-&#39;) {
  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] >= &#39;1&#39; && p[0] <= &#39;9&#39;) {
  v = p[0]-&#39;0&#39;;
  p++; plen++;
 } else if (p[0] == &#39;0&#39; && slen == 1) {
  *value = 0;
  return 1;
 } else {
  return 0;
 }

 while (plen < slen && p[0] >= &#39;0&#39; && p[0] <= &#39;9&#39;) {
  if (v > (ULLONG_MAX / 10)) /* Overflow. */
   return 0;
  v *= 10;

  if (v > (ULLONG_MAX - (p[0]-&#39;0&#39;))) /* Overflow. */
   return 0;
  v += p[0]-&#39;0&#39;;

  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;
}
Nach dem Login kopieren

Verwandte Empfehlungen:

PHP implementiert die Konvertierung chinesischer Schriftzeichen in Ganzzahlen Zahlen wie: einhunderteins konvertiert in 101

sql CONVERT() string Konvertierung in Ganzzahltyp Datumszeichentyp

Die PHP-Implementierung verwendet keine integrierten Funktionen, um die String--KonvertierungstypMethode

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage