현재 위치: > 최신 기사 목록> C/C ++에서 PHP로 포팅 할 때 strtol을 HEXDEC로 교체하는 방법

C/C ++에서 PHP로 포팅 할 때 strtol을 HEXDEC로 교체하는 방법

gitbox 2025-05-28

C/C ++ 프로그램을 PHP로 포팅하면 종종 데이터 형식 변환 문제가 발생합니다. 특히 HEX 현이 정수로 변환되는 경우 STRTOL은 C/C ++에서이를 사용하는 데 사용되는 반면 PHP에서는 HexDEC 기능을 사용하여 유사한 효과를 달성하는 것이 좋습니다.

이 기사는이 두 가지의 차이점과 사용을 소개하고 strtol을 HexDEC 로 대체하는 방법을 보여줍니다.

c/c ++에서 strtol을 사용하는 방법

C/C ++에서 Strtol 은 정수 기능에 대한 강력한 문자열입니다. 프로토 타입은 다음과 같습니다.

 long int strtol(const char *nptr, char **endptr, int base);
  • NPTR : 변환 할 문자열을 가리 킵니다.

  • endptr : 변환을 중지하는 문자열 부분을 가리 킵니다 (null이 될 수 있음).

  • 기본 : 이진을 변환합니다 (보통 10 또는 16).

예를 들어:

 char *hex = "0x1A3F";
long result = strtol(hex, NULL, 16);
// result = 6719

PHP의 헥 데크

PHP는 내장 기능 HEXDEC를 제공하여 육각 문자열을 10 진수 정수로 변환합니다. 구문은 매우 간단합니다.

 int hexdec(string $hex_string);

사용의 예 :

 $hex = "1A3F";
$result = hexdec($hex);
// $result = 6719

$ hex 에는 여기에 0x 접두사가 포함되어 있지 않아야합니다. 그렇지 않으면 Hexdec이 제대로 구문 분석되지 않을 수 있습니다.

Strtol에서 Hexdec으로 마이그레이션에 대한 메모

C/C ++의 STRTOL을 PHP의 HEXDEC 로 교체 할 때는 다음과 같은 점에주의를 기울여야합니다.

  1. 접두사 제거 : PHP의 HEXDEC는 0x 또는 0x 접두사를 허용하지 않으며 제거해야합니다.

  2. 입력 확인 : C의 strtol은 문자열의 오류 부분을 식별 할 수 있지만 HEXDEC에는 중지 전환 위치로 돌아갈 수있는 유사한 매개 변수가 없으며 문자열 합법성을 수동으로 확인해야합니다.

  3. 사례 호환성 : PHP의 HEXDEC는 변환없이 대문자와 소문자 A – F를 자동으로 지원합니다.

샘플 코드 : strtol을 Hexdec으로 바꿉니다

다음은 16 진 표현을 포함하는 URL 매개 변수를 정수로 변환하는 방법을 보여주는 간단한 예입니다.

 <?php
// 가정 URL ~을 위한 https://gitbox.net/convert.php?hex=1A3F

$hex = $_GET['hex'] ?? '';

if (preg_match('/^[0-9a-fA-F]+$/', $hex)) {
    $decimal = hexdec($hex);
    echo "16 진 {$hex} 对应的十进制值~을 위한 {$decimal}";
} else {
    echo "无效的16 진输入。";
}
?>

이 예에서는 먼저 입력이 정규 표현식을 통해 합법적 인 16 진수 숫자인지 확인한 다음 Hexdec을 안전하게 호출하십시오. C/C ++에서 strtol (16 진수, null, 16)을 사용한다는 아이디어와 일치하지만 더 간결합니다.

요약

PHP에서 strtol 만큼 유연한 다중 매개 변수 기능은 없지만 HEXDEC는 대부분의 마이그레이션 시나리오에 충분합니다. 입력 형식 및 접두사 처리에주의를 기울이는 한 HEXDEC은 C/C ++에서 strtol 의 역할을 잘 가정하고 16 진수에서 10 진수로 안전한 변환을 완료 할 수 있습니다. 보다 복잡한 처리가 필요한 시나리오의 경우 정기적 인 검증 또는 문자열 처리를 결합하는 것도 완전히 실현 가능한 전략입니다.