>  기사  >  백엔드 개발  >  PHP 문자열을 정수로 변환하는 방법

PHP 문자열을 정수로 변환하는 방법

藏色散人
藏色散人원래의
2021-03-22 09:32:444038검색

PHP 문자열을 정수형으로 변환하는 방법: 1. "intval($num);" 메소드를 사용하여 문자열 유형 숫자를 정수형 숫자로 변환합니다. 2. ASCII 코드를 사용하여 문자열 유형을 정수로 변환합니다. 유형. .

PHP 문자열을 정수로 변환하는 방법

이 문서의 운영 환경: 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} - &#39;0&#39;;            
        $int += $num;        
    }
 
    return $int;        
}
 
 $num = &#39;345432123&#39;;    
 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] == &#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;
}

위 내용은 PHP 문자열을 정수로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.