Heim  >  Artikel  >  Backend-Entwicklung  >  PHP implementiert die String-Konvertierungsmethode, ohne integrierte Funktionen zu verwenden

PHP implementiert die String-Konvertierungsmethode, ohne integrierte Funktionen zu verwenden

小云云
小云云Original
2018-02-10 11:06:471500Durchsuche

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

 return $int;  
}

 $num = &#39;345432123&#39;; 
 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] <= &#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] >= '0' && p[0] <= &#39;9&#39;) {
  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!

Stellungnahme:
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