내장 함수를 사용하지 않고 PHP에서 문자열을 정수로 변환하는 방법에 대한 자세한 설명

墨辰丷
풀어 주다: 2023-03-27 06:44:01
원래의
1513명이 탐색했습니다.

일반적으로 PHP 문자열 유형 숫자를 정수로 변환하려면 시스템에 내장된 API를 사용하여 변환합니다. 그러나 다음 문서에서는 PHP가 문자열을 변환하기 위해 내장 함수를 사용하지 않는 방법을 주로 소개합니다. 해당 유형의 메소드 예제가 기사에 자세히 소개되어 있습니다. 필요한 친구들은 함께 살펴보겠습니다.

소개

PHP 문자열 유형 숫자를 정수로 변환하려는 경우 일반적으로 시스템에 내장된 API를 사용하여 변환하지만, 규정에 따라 시스템에 내장된 API를 사용하는 것이 허용되지 않는 경우 API에서 변환하는 대신 함수 변환을 직접 구현하려면 어떻게 해야 합니까? 여기서는 이를 달성하는 방법을 살펴보겠습니다.

시스템 내장 API 방법

$num = '345432123';

 //(一)
$num = (int)$num;
//输出:
//int(345432123)

//(二)
$num = intval($num);
//输出:
//int(345432123)
로그인 후 복사

ASCII 코드 방법 사용

다음으로 변환을 위해 ASCII 코드 방법을 사용합니다. 각 문자는 ASCII에 해당하기 때문입니다. code, 이 문자를 더하고 빼고 곱하고 나누면 실제로는 ASCII 코드의 더하기, 빼기, 곱하기, 나누기, 즉 정수 연산이 되어 결국 정수가 반환됩니다. 인터넷에서 전송됨 -

via 위 그림에서 볼 수 있듯이 문자 '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에도 함수가 있습니다. 문자열을 정수 유형으로 변환하는 작업은 상대적으로 완전하고 엄격합니다. 자세한 내용은

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 정수

숫자로 변환: 101로 변환


sql CONVERT() String
정수 유형으로 변환

날짜 문자 유형


PHP는 내장 함수를 사용하지 않고 문자열
정수 유형으로의 변환

Method


을 구현합니다.

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

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿