> 백엔드 개발 > PHP 문제 > PHP에서 문자열을 바이트 배열로 변환하는 방법

PHP에서 문자열을 바이트 배열로 변환하는 방법

PHPz
풀어 주다: 2023-04-27 10:13:05
원래의
1050명이 탐색했습니다.

PHP에서는 문자열이 문자 형태로 처리되며, 각 문자는 서로 다른 바이트 수를 차지합니다. 문자열을 바이트 배열로 변환해야 하는 경우 일반적으로 네트워크 통신, 데이터 전송, 데이터 저장 및 기타 시나리오에 사용됩니다. 이러한 시나리오에서는 데이터를 바이트 배열 형식으로 처리해야 하기 때문입니다.

PHP에서 문자열과 바이트 배열 간의 변환에는 일부 함수의 도움이 필요합니다. 아래에서는 이러한 함수와 사용법을 자세히 소개합니다.

  1. strlen 함수

첫 번째는 문자열의 문자 수인 문자열 길이를 가져오는 데 사용되는 strlen 함수입니다. 예:

$str = "hello";
$len = strlen($str);
echo $len; // 输出 5
로그인 후 복사

위 예에서 $str은 5개의 문자로 구성되며, strlen 함수를 통해 길이를 구하고 그 결과를 $len 변수에 대입하여 최종적으로 $len 값을 출력합니다.

  1. mb_strlen 함수

PHP에서는 기본적으로 각 문자가 1바이트를 차지하지만 중국어와 같은 복잡한 문자 집합의 경우 한 문자를 표현하는 데 여러 바이트가 필요할 수 있습니다. 이 경우 mb_strlen 함수를 사용하여 문자열의 실제 문자 수(예:

$str = "你好,世界!";
$len = mb_strlen($str, "utf-8");
echo $len; // 输出 7
로그인 후 복사

) 위의 예에서 $str은 한자를 포함하는 문자열입니다. strlen 함수를 사용하여 길이를 얻으면 11만 얻을 수 있습니다. mb_strlen을 사용하면 함수는 문자열의 실제 문자 수를 올바르게 얻으려면 문자 세트를 utf-8로 지정해야 합니다.

  1. str_split 함수

Next는 문자열을 단일 문자 배열로 분할하는 데 사용되는 str_split 함수입니다. 예:

$str = "hello";
$arr = str_split($str);
print_r($arr); // 输出 Array ( [0] => h [1] => e [2] => l [3] => l [4] => o )
로그인 후 복사

위의 예에서 $str은 문자열로 분할됩니다. str_split 함수 단일 문자를 포함하는 배열로 분할하고 그 결과를 $arr 변수에 할당하고 마지막으로 print_r 함수를 사용하여 $arr의 내용을 출력합니다.

  1. unpack 함수

unpack 함수는 바이너리 문자열을 배열로 변환하는 함수입니다. 구문은 다음과 같습니다.

array unpack ( string $format , string $data )
로그인 후 복사

$format 매개변수는 데이터의 형식을 지정하는 데 사용되며, $data 매개변수는 변환할 이진 문자열입니다. $format 매개변수는 하나 이상의 형식 코드로 구성된 문자열입니다. 각 형식 코드는 데이터 유형 및 해당 바이트 수를 설명하는 데 사용됩니다. 일반적으로 사용되는 형식 코드와 해당 데이터 유형은 다음과 같습니다.

  • c - 부호 있는 문자
  • C - 부호 없는 문자
  • s - 부호 있는 짧은 정수
  • S - 부호 없는 짧은 정수
  • n - 부호 없는 짧은 정수, 네트워크 바이트 order
  • i - 부호 있는 정수
  • I - 부호 없는 정수
  • l - 부호 있는 long
  • L - 부호 없는 long
  • N - 부호 없는 long, 네트워크 바이트 순서

예를 들어 다음을 포함하는 이진 문자열을 변환해야 하는 경우 정수 데이터를 배열로 변환하려면 다음 코드를 사용할 수 있습니다:

$data = "\x00\x12\x34\x56"; // 十六进制字符串
$arr = unpack("N", $data);
print_r($arr); // 输出 Array ( [1] => 305419896 )
로그인 후 복사

위의 예에서 $data는 단일 정수 데이터를 포함하는 이진 문자열입니다. unpack 함수는 이를 하나의 요소를 포함하는 배열로 변환하고 결과를 다음에 할당합니다. $arr 변수를 사용하고 마지막으로 print_r 함수를 사용하여 $arr의 내용을 인쇄합니다.

  1. pack 함수

pack 함수는 unpack 함수와 달리 배열을 이진 문자열로 묶는 데 사용됩니다.

string pack ( string $format , mixed $args1 [, mixed $args2 [, mixed $... ]] )
로그인 후 복사

여기서 $format은 unpack 함수와 동일한 형식 코드를 가지며 사용됩니다. 패키징된 데이터 형식을 지정하려면 $args1, $args2 및 기타 매개변수가 패키징할 데이터이며 하나 이상이 될 수 있습니다.

예를 들어 배열을 이진 문자열로 압축해야 하는 경우 다음 코드를 사용할 수 있습니다.

$arr = array(305419896);
$data = pack("N", ...$arr);
echo bin2hex($data); // 输出 00123456
로그인 후 복사

위의 예에서 $arr는 이진 문자열로 압축된 정수 데이터를 포함하는 배열입니다. 마지막으로 bin2hex 함수를 사용하여 $data를 16진수 문자열로 변환하여 출력합니다.

요약하자면, PHP에서 문자열을 바이트 배열로 변환하는 방법은 여러 가지가 있으며 특정 애플리케이션 시나리오에 따라 적절한 방법을 선택할 수 있습니다. 어떤 방법을 사용하든 올바른 결과를 얻으려면 문자 인코딩 및 데이터 형식과 같은 문제에 주의해야 합니다.

위 내용은 PHP에서 문자열을 바이트 배열로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿