ホームページ > バックエンド開発 > PHPの問題 > PHPで文字列をバイト配列に変換する方法

PHPで文字列をバイト配列に変換する方法

PHPz
リリース: 2023-04-27 10:13:05
オリジナル
1061 人が閲覧しました

PHP では、文字列は文字の形式で処理され、各文字が占めるバイト数は異なります。文字列をバイト配列に変換する必要がある場合は、通常、ネットワーク通信、データ送信、データ ストレージ、その他のシナリオで使用されます。これらのシナリオではデータをバイト配列の形式で処理する必要があるためです。

PHP での文字列とバイト配列間の変換にはいくつかの関数の助けが必要ですが、以下ではこれらの関数とその使用方法を詳しく紹介します。

  1. strlen 関数

最初の関数は strlen 関数で、文字列の長さ、つまり文字列内の文字数を取得するために使用されます。例:

$str = "hello";
$len = strlen($str);
echo $len; // 输出 5
ログイン後にコピー

上の例では、$str は 5 文字で構成される文字列です。その長さは strlen 関数によって取得され、結果は $len 変数に代入され、最後に次の値が代入されます。 $lenが出力されます。

  1. mb_strlen 関数

PHP では、デフォルトで各文字が 1 バイトを占めますが、中国語などの複雑な文字セットの場合、1 文字を表すために複数のバイトが必要になる場合があります。の場合は、mb_strlen 関数を使用して文字列内の実際の文字数を取得する必要があります。例:

$str = "你好,世界!";
$len = mb_strlen($str, "utf-8");
echo $len; // 输出 7
ログイン後にコピー

上記の例では、$str は中国語の文字を含む文字です。文字列の長さを取得する場合、取得できるのは 11 のみです。mb_strlen 関数を使用する場合、文字列内の実際の文字数を正しく取得するには、文字セットを utf-8 として指定する必要があります。

  1. str_split 関数

次は 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 関数によって 1 つの文字を含む配列に分割され、その結果が $arr 変数に代入され、最後に print_r 関数を使用してその内容が出力されます。 $arr.

  1. unpack 関数

unpack 関数は、バイナリ文字列を配列に変換する関数であり、その構文は次のとおりです。 format パラメータはデータの形式を指定するため、$data パラメータは変換されるバイナリ文字列です。 $format パラメータは、1 つ以上のフォーマット コードで構成される文字列です。各フォーマット コードは、データ型とそれに対応するバイト数を記述するために使用されます。一般的に使用される形式コードとそれに対応するデータ型は次のとおりです。

c - 符号付き文字
  • C - 符号なし文字
  • s - 符号付き short integer
  • S - 符号なし short 整数
  • n - 符号なし short 整数、ネットワーク バイト オーダー
  • i - 符号付き整数
  • I - 符号なし整数
  • l - 符号付き長整数
  • L - 符号なし長整数
  • N - 符号なし長整数、ネットワーク バイト オーダー
  • たとえば、整数データを含むバイナリ文字列を配列にするには、次のコードを使用できます。
array unpack ( string $format , string $data )
ログイン後にコピー

上の例では、 $data は 1 つの整数データを含むバイナリ文字列であり、これを 1 つの要素を含む配列に変換します。 unpack 関数を使用し、結果を $arr 変数に割り当て、最後に print_r 関数を使用して $arr の内容を出力します。

pack 関数
  1. unpack 関数とは対照的に、pack 関数は配列をバイナリ文字列にパックするために使用されます。その構文は次のとおりです:
$data = "\x00\x12\x34\x56"; // 十六进制字符串
$arr = unpack("N", $data);
print_r($arr); // 输出 Array ( [1] => 305419896 )
ログイン後にコピー

$format のフォーマット コードは、パックされたデータのフォーマットを指定するために使用される unpack 関数のフォーマット コードと同じです。$args1 や $args2 などのパラメータはパックされるデータであり、 1 つ以上。

たとえば、配列をバイナリ文字列にパックする必要がある場合は、次のコードを使用できます:

string pack ( string $format , mixed $args1 [, mixed $args2 [, mixed $... ]] )
ログイン後にコピー

上の例では、 $arr は整数データを含む配列です。 Pack 関数でバイナリ文字列にパックし、その結果を $data 変数に代入し、最後に bin2hex 関数で $data を 16 進文字列に変換して出力します。

要約すると、PHP では文字列をバイト配列に変換する方法が数多くあり、特定のアプリケーション シナリオに応じて適切な方法を選択できます。どちらの方法を使用する場合でも、正しい結果を得るには、文字コードやデータ形式などの問題に注意する必要があります。

以上がPHPで文字列をバイト配列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート