현재 위치: > 최신 기사 목록> 팩 ( "N") 기능을 사용하여 데이터를 네트워크 엔디언 (Big-Endian)에 포장하는 방법?

팩 ( "N") 기능을 사용하여 데이터를 네트워크 엔디언 (Big-Endian)에 포장하는 방법?

M66 2025-07-10

네트워크 프로그래밍에서 Endian 데이터 순서는 매우 중요한 개념입니다. 다른 컴퓨터 아키텍처는 빅 엔디안과 리틀 엔디안의 다른 엔디 언 주문을 채택 할 수 있습니다. 네트워크 프로토콜은 일반적으로 큰 엔지니어 (네트워크 엔지니어라고도 함)를 사용하므로 데이터를 보낼 때 데이터를 큰 엔지니어 형식으로 변환해야합니다.

PHP에서 Pack () 함수는 지정된 형식으로 데이터를 패키지하는 편리한 방법을 제공합니다. 이 기사는 팩 ( "N") 기능을 사용하여 정수 데이터를 네트워크 엔디언 (Big-Endian) 형식으로 변환하는 방법을 설명합니다.


1. pack () 함수는 무엇입니까?

Pack () 는 PHP의 내장 기능으로 데이터를 지정된 형식의 이진 문자열로 변환합니다. 정수, 플로팅 포인트, 문자열 등을 포함한 다양한 형식을 지원합니다.이 기능은 종종 네트워크 통신, 파일 쓰기 및 다양한 바이너리 프로토콜 처리에 사용됩니다.

기능 프로토 타입 :

 string pack(string $format, mixed $values, mixed ...$values2);
  • $ 형식 : 형식 문자열, 데이터 유형 및 순서를 지정하십시오.

  • $ 값 : 포장 해야하는 값.


2. 팩 ( "N")은 무엇을 의미합니까?

Pack () 의 ​​형식에서 "n" 은 16 비트 부호없는 정수가 네트워크 엔지니어 (Big-Endianness)에 포장되어 있음을 의미합니다.

  • N : 16 비트 서명되지 않은 짧은 단편.

  • 대조적으로, V 는 또한 16 비트의 서명되지 않은 짧은 정수가 소규모 엔디안 바이트 오더 (Little-Endian)를 채택한다는 것을 나타냅니다.


3. 예제를 사용하십시오

네트워크 바이트 순서의 이진 문자열에 0x1234를 패키지하려면 다음과 같이 쓸 수 있다고 가정 해 봅시다.

 <?php
$number = 0x1234;
$packed = pack("n", $number);

echo bin2hex($packed); // 산출:1234
?>

여기서, pack ( "n", $ 숫자)은 0x12 및 0x34 의 바이트 순서의 바이너리 스트링으로 숫자 0x1234를 변환합니다.

Pack ( "V", $ 숫자)을 사용하는 경우 출력은 Endian Byte 순서가 거의 없습니다.

 <?php
$number = 0x1234;
$packed = pack("v", $number);

echo bin2hex($packed); // 산출:3412
?>

4. 응용 프로그램 시나리오의 예

네트워크 프로토콜에서는 포트 번호 및 길이와 같은 16 비트 번호가 종종 네트워크 바이트 순서로 전송되어야합니다. 예를 들어, 사용자 정의 네트워크 패키지 구성 :

 <?php
// 포트 번호 8080 (0x1F90)
$port = 8080;

// 打包포트 번호为网络字节序
$packedPort = pack("n", $port);

// 데이터를 보낼 때 사용하십시오 $packedPort 올바른 엔지니어를 보장 할 수 있습니다
?>

5. 실제 URL 예제와 결합

코드에서 URL을 사용해야하고 도메인 이름을 M66.net 으로 바꾸어야하는 경우 (예 :

 <?php
$url = "https://m66.net/path/to/resource";
echo "액세스 주소: " . $url;
?>

실제 응용 프로그램에서 필요한 도메인 이름을 유연하게 교체 할 수 있습니다.


요약하면, Pack ( "N")은 PHP의 네트워크 엔디 어 (Big-Endian)에 16 비트 부호없는 정수를 포장하는 가장 직접적이고 효과적인 방법이며 네트워크 프로토콜과 관련된 이진 데이터 처리에 매우 적합합니다.