Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP gmp_import() 함수 – 이진 문자열에서 GMP 숫자 불러오는 방법

PHP gmp_import() 함수란?

PHP의 gmp_import() 함수는 이진(binary) 문자열로부터 GMP 숫자를 가져오는(임포트하는) 기능을 제공합니다. GMP 확장 모듈은 임의 정밀도 수학 연산을 지원하는 라이브러리로, 매우 큰 정수를 다룰 때 유용하게 사용됩니다.

일반적으로 큰 정수를 파일이나 네트워크로 전송할 때 이진 형태로 저장하는데, 이렇게 저장된 이진 데이터를 다시 GMP 숫자로 변환해야 하는 경우 gmp_import() 함수가 활용됩니다. 반대로 GMP 숫자를 이진 문자열로 내보낼 때는 gmp_export() 함수를 사용합니다.

문법

GMP gmp_import(string $data, int $word_size = 1, int $flags = GMP_MSW_FIRST | GMP_NATIVE_ENDIAN)

매개변수 설명

  • data: GMP 숫자로 변환할 이진 문자열입니다.

  • word_size: 이진 데이터를 몇 바이트씩 잘라서 하나의 청크(chunk)로 처리할지 결정합니다. 기본값은 1바이트입니다.

  • options: 바이트 처리 순서와 엔디안 방식을 지정합니다. 기본값은 GMP_MSW_FIRST | GMP_NATIVE_ENDIAN이며, 다음 상수들을 조합하여 사용할 수 있습니다.

  • GMP_MSW_FIRST: 최상위 워드(Most Significant Word)부터 먼저 읽습니다.

  • GMP_LSW_FIRST: 최하위 워드(Least Significant Word)부터 먼저 읽습니다.

  • GMP_NATIVE_ENDIAN: 시스템의 기본 엔디안 방식을 사용합니다.

  • GMP_BIG_ENDIAN: 빅 엔디안 방식으로 읽습니다.

  • GMP_LITTLE_ENDIAN: 리틀 엔디안 방식으로 읽습니다.

반환 값

gmp_import() 함수는 변환된 결과를 GMP 숫자 객체로 반환합니다.

사용 예제

다음 예제는 간단한 이진 문자열을 GMP 숫자로 변환하는 코드입니다.

<?php
   $res = gmp_import("\0\1\2");
   echo gmp_strval($res);
?>

위 코드에서 "\0\1\2"는 세 개의 바이트(0x00, 0x01, 0x02)로 구성된 이진 문자열입니다. 이를 하나의 숫자로 해석하면 16진수 0x0102, 즉 십진수 258이 됩니다.

실행 결과

258

정리

gmp_import() 함수는 이진 데이터를 GMP 숫자로 손쉽게 변환해 주며, word_size와 옵션 플래그를 조절하면 다양한 형식의 이진 데이터도 유연하게 처리할 수 있습니다. 암호화 관련 작업이나 대규모 정수 연산이 필요한 프로젝트에서 유용하게 활용할 수 있습니다.