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

PHP unpack() 함수 완벽 정리: 바이너리 문자열 데이터 추출 방법

PHP의 unpack() 함수는 바이너리 문자열로부터 데이터를 언패킹(unpacking)하여 추출하는 데 사용됩니다. 이진 형식으로 저장된 데이터를 사람이 읽을 수 있는 값으로 변환해야 할 때 매우 유용한 함수입니다.

문법

unpack(format, data)

매개변수

  • format − 데이터를 해석할 때 사용할 형식을 지정합니다. 아래는 사용 가능한 형식 코드 목록입니다.

    • a − NUL로 채워진 문자열

    • A − 공백(SPACE)으로 채워진 문자열

    • h − 16진수 문자열 (하위 니블 우선)

    • H − 16진수 문자열 (상위 니블 우선)

    • c − 부호 있는 char (signed char)

    • C − 부호 없는 char (unsigned char)

    • s − 부호 있는 short (항상 16비트, 시스템 바이트 순서)

    • S − 부호 없는 short (항상 16비트, 시스템 바이트 순서)

    • n − 부호 없는 short (항상 16비트, 빅 엔디안)

    • v − 부호 없는 short (항상 16비트, 리틀 엔디안)

    • i − 부호 있는 integer (시스템에 따라 크기와 바이트 순서가 결정됨)

    • I − 부호 없는 integer (시스템에 따라 크기와 바이트 순서가 결정됨)

    • l − 부호 있는 long (항상 32비트, 시스템 바이트 순서)

    • L − 부호 없는 long (항상 32비트, 시스템 바이트 순서)

    • N − 부호 없는 long (항상 32비트, 빅 엔디안)

    • V − 부호 없는 long (항상 32비트, 리틀 엔디안)

    • f − float (시스템에 따라 크기와 표현 방식이 결정됨)

    • d − double (시스템에 따라 크기와 표현 방식이 결정됨)

    • x − NUL 바이트

    • X − 한 바이트 뒤로 이동

    • Z − NUL로 채워진 문자열

    • @ − 지정한 절대 위치까지 NUL로 채움

  • data − 언패킹할 바이너리 데이터입니다.

반환값

unpack() 함수는 성공 시 추출된 데이터를 담은 배열(array)을 반환하며, 실패 시 false를 반환합니다.

예제

<?php
   $var = "Jacob";
   print_r(unpack("C*myint",$var));
?>

실행 결과

위 예제를 실행하면 다음과 같은 결과가 출력됩니다.

Array
(
   [myint1] => 74
   [myint2] => 97
   [myint3] => 99
   [myint4] => 111
   [myint5] => 98
)

이 예제에서는 형식 코드 C*(부호 없는 char)를 사용하여 문자열 "Jacob"의 각 문자를 아스키 코드 값으로 변환했습니다. 별표(*)는 남은 모든 데이터에 대해 반복 적용하라는 의미이며, 각 값은 'myint1', 'myint2'와 같은 이름의 배열 요소로 저장됩니다.