Maison > Article > développement back-end > Explication détaillée de la façon de convertir une chaîne en entier en PHP sans utiliser les fonctions intégrées
En général, si vous souhaitez convertir des nombres de type chaîne PHP en nombres entiers, nous utiliserons l'API intégrée du système pour effectuer la conversion. Cependant, l'article suivant vous présente principalement comment PHP n'utilise pas les fonctions intégrées. pour implémenter des chaînes. L'exemple de la méthode de conversion en type entier est présenté de manière très détaillée dans l'article. Les amis qui en ont besoin peuvent s'y référer.
Introduction
Si vous souhaitez convertir des nombres de type chaîne PHP en nombres entiers, nous utilisons généralement l'API intégrée du système pour le faire Effectuez une conversion, mais que se passe-t-il si nous ne sommes pas autorisés à utiliser la conversion API intégrée au système, mais sommes autorisés à implémenter nous-mêmes une conversion de fonction ? Nous voyons ici comment y parvenir.
Méthode API intégrée au système
$num = '345432123'; //(一) $num = (int)$num; //输出: //int(345432123) //(二) $num = intval($num); //输出: //int(345432123)
Utiliser la méthode du code ASCII
Ensuite, nous utilisons la méthode du code ascii pour convertir, car chaque caractère correspond à un code ascii, lors de l'ajout, de la soustraction, de la multiplication et de la division de ce caractère Quand , il s'agit en fait d'opérations d'addition, de soustraction, de multiplication et de division sur des codes ascii, c'est-à-dire des opérations entières, qui finiront par renvoyer un nombre entier
-image transférée depuis Internet. -
Comme vous pouvez le voir sur l'image ci-dessus, les codes ASCII des caractères '0' ~ '9' sont 48 ~ 57. Lors de la conversion, nous soustrayons '0' de chaque caractère par exemple. : '1' - '0' = 1, '2' - '0' = 2 La valeur de retour est de type Int Voir l'implémentation du code ci-dessous
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)
<.>
est également disponible dans Redis. Fournit une fonction de conversion de chaîne en entier, qui se fait également via du code ASCII. L'implémentation est relativement complète et rigoureuse. Pour plus de détails, veuillez vous référer auFonction string2ll
#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; }
Recommandations associées :
PHP pour implémenter les caractères chinoisConvertir en entierNombre, par exemple : cent un est converti en 101
en type entier Type de caractère date
Convertir en entierMéthode
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!