PHP로 이진 파일 파싱하기

이진 코드 데이터 파일은 텍스트 형식으로 일관성있게 변환 할 수없는 과학적으로 사용되는 C와 같은 저급 프로그래밍 언어로 프로그래밍하는 데 사용됩니다.

저수준 언어를 사용하여 주어진 값을 저장하면 이진 코드를 텍스트 편집기에로드 한 후에 레코드하거나 읽어야합니다.

이진 파일은 파스칼 같은 언어로 원시 이진 형식이므로 읽을 수 없습니다. 따라서 웹 마스터는 PHP를 사용하여 파일을 텍스트로 읽고 씁니다. 특정 기능을 사용하여 값을 검색해야합니다.

PHP는 unpack ()이라는 고유 한 함수를 사용합니다. 첫 번째 데이터 형식 인수가 선언 된 후 데이터를 검색 할 문자열로 두 번째 인수를 복구하고 만들어야합니다. 복구 가능한 데이터는 기호 인수에 있어야합니다.

C 나 Pascal과 같은 저수준 언어를 사용하는 경우 데이터를 이진 파일 (텍스트로 변환 할 수없는 레코드)에 저장하는 일반적인 절차입니다.

C 언어를 사용하여 값 500을 파일에 저장하려는 경우 코드는 다음과 같습니다.

 #include int main () {int val = 500; FILE * fp = fopen ( "file", "wb"); fwrite (& val, sizeof (int), 1, fp); // "file"에 val을 저장합니다. fclose (fp); 0을 반환; } 

이 특정 파일을 텍스트 편집기로 열면 값이 텍스트로 저장되지 않고 이진 원시 형식이므로 읽을 수 없습니다.

그러나 PHP를 사용하는 경우 종종 바이너리로 저장된 값을 수시로 검색해야합니다. 그러나 PHP는 파일을 텍스트로 읽고 씁니다. 특정 기능을 사용하여 값을 검색해야합니다.

해결책:

unpack () 함수는 이러한 종류의 문제를 해결하는 데 사용할 수 있습니다. 먼저 복구 할 데이터 유형을 선언 한 다음 데이터를 검색하려는 문자열을 선언해야합니다.

복구 할 데이터 유형은 해당 기호를 사용하여 상세하게 설명해야합니다. 예를 들어, 부호가있는 정수를 검색하려면 i 문자를 사용하십시오.

위 예제에서 저장 한 파일을 사용하면 값을 검색하는 코드는 다음과 같습니다.

    • 중요 사항 :
  • 데이터 크기는 프로세서 아키텍처 (Sparc, ARM, PowerPC)에 따라 달라질 수 있습니다.
    • C로 작성된 프로그램은 32 비트에서 64 비트까지 다른 크기의 정수를 사용합니다.
    • 데이터의 배열이 같지 않을 수 있습니다. 일부 컴퓨터는 Big Endian에 데이터를 저장하고 다른 컴퓨터는 Little Endian에 데이터를 저장합니다.
    • 데이터 크기는 컴파일러에 따라 다를 수 있습니다.
    • unpack 함수는 여기에 예제로 주어진 배열을 좀 더 정교하게 배열을 반환합니다. 여기서는 하나의 요청 된 값으로 배열의 오프셋 1에 값이 있습니다.
  • 32 비트 PC 용 데이터 유형
    • 다음은 32 비트 PC 용으로 컴파일 된 C 프로그램에서 기록한 데이터를 보여주는 표입니다.
    • char : c
    • 서명되지 않은 char : C
    • 짧게 : s
    • 부호없는 짧은 : S
    • int : 나
    • 부호없는 int : L
    • float : f
    • 두 배 : d

이전 기사 다음 기사

톱 팁