PHP 문자열을 정수형으로 변환하는 방법: 1. "intval($num);" 메소드를 사용하여 문자열 유형 숫자를 정수형 숫자로 변환합니다. 2. ASCII 코드를 사용하여 문자열 유형을 정수로 변환합니다. 유형. .
이 문서의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터
PHP - 문자열을 정수로 변환 - 내장 함수를 사용하지 않음
php 문자열 유형 소개 원하는 경우 숫자 숫자를 정수로 변환할 때 일반적으로 시스템에 내장된 API를 사용하여 변환을 수행합니다. 그러나 시스템에 내장된 API를 사용하여 변환하는 것이 허용되지 않고 대신 함수 변환을 구현하도록 하면 어떻게 될까요? ? 여기서는 이를 달성하는 방법을 살펴보겠습니다.
시스템에 내장된 API 방식
$num = '345432123'; //(一) $num = (int)$num; //输出: //int(345432123) //(二) $num = intval($num); //输出: //int(345432123)
ASCII 코드 방식을 사용합니다
이제는 덧셈, 뺄셈, 곱셈, 연산 등의 각 문자가 ASCII 코드에 해당하므로 변환을 위해 ASCII 코드 방식을 사용합니다. 이 문자를 나누는 것은 실제로 ASCII 코드에 대한 덧셈, 뺄셈, 곱셈 및 나눗셈 연산, 즉 정수 연산을 수행하여 결국 정수를 반환하는 것입니다.
[추천 학습: PHP 비디오 튜토리얼]
문자 '0' ~ '9' ASCII 코드는 48~57입니다. 변환 시 각 문자에서 '0'을 뺍니다. 예: '1' - '0' = 1, '2' - '0' = 2. 반환 값은 다음과 같이 Int 유형입니다. 자세한 내용은 코드 구현을 참조하세요.
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) 在 Redis 里面也有提供一个字符串转整型的函数,也是通过ascii码方式去做的,实现的比较完善严谨,具体可以参考下 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; }
위 내용은 PHP 문자열을 정수로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!