PHP では、文字列をバイト配列に変換することは非常に便利な操作です。バイト配列は、バイナリ データを扱う場合に特に重要です。この記事では、PHP 文字列をバイト配列に変換する方法を詳しく見ていきます。
1. バイト配列とは何ですか?
バイト配列、つまりバイトで構成される配列は、データを表すために使用される形式です。 PHP では、各文字は 1 バイト以上で表されます。したがって、文字列はバイト配列として見ることができます。
2. 文字列をバイト配列に変換するにはどうすればよいですか?
PHP では、2 つの方法で文字列をバイト配列に変換できます。
1. str_split() 関数を使用する
str_split() 関数は、指定された長さに応じて文字列を配列に分割でき、各要素は同じ長さの文字列になります。
以下は、str_split() 関数を使用して文字列をバイト配列に変換するサンプル コードです。
$str = 'Hello world!'; $bytes = str_split($str);
ここでの $bytes 配列には、$ 内の各文字に対応する文字が格納されます。 str 文字列 ASCII コード値。 $bytes 配列内の要素を 16 進形式に変換したい場合は、dechex() 関数を使用できます。
$bytes 配列の要素を 16 進形式に変換するコードは次のとおりです:
foreach ($bytes as $byte) { $hex[] = dechex(ord($byte)); }
上記のコードでは、ord() 関数を使用して各文字を対応する文字に変換します。 ASCII コード値を取得し、dechex() 関数を使用して 16 進形式に変換します。
2. unpack() 関数を使用する
unpack() 関数は、各要素が文字列内の対応するバイトの 10 進数値である、バイナリ文字列を配列に変換できます。
これは、unpack() 関数を使用して文字列をバイト配列に変換するサンプル コードです:
$str = 'Hello world!'; $bytes = unpack('C*', $str);
上記のコードでは、unpack() 関数と文字 'C を使用しました。 ' 。この文字は、各バイトが符号なし文字として扱われることを示します。さらに、「*」はすべてのバイナリ データを読み取ることを意味します。
3. バイト配列を文字列に変換するにはどうすればよいですか?
implode() 関数を使用して、バイト配列を文字列に変換できます。以下は、implode() 関数を使用して $bytes 配列を文字列に変換するサンプル コードです。
$str = implode('', array_map('chr', $bytes));
上記のコードでは、array_map() 関数と chr() 関数を使用しました。 array_map() 関数は、$bytes 配列の各要素 (つまり、バイト値) を chr() 関数のパラメータとして受け取り、各バイト値を ASCII 文字に変換します。最後に、implode() 関数を使用して、すべての文字を文字列に連結します。
4.文字列をバイト配列に変換するパフォーマンスをテストするにはどうすればよいですか?
文字列をバイト配列に変換するのは一般的な操作であり、その効率を確認するためにパフォーマンスをテストする必要があります。
次は、文字列をバイト配列に変換するパフォーマンスをテストするために使用できる簡単なテストです。
$testData = str_repeat('a', 1024 * 1024); $times = 100; $start = microtime(true); for ($i = 0; $i < $times; $i++) { $bytes = unpack('C*', $testData); } $end = microtime(true); echo 'Time per loop: ' . (1000 * ($end - $start) / $times) . 'ms';
上記のコードでは、str_repeat() 関数を使用して、 1MB サイズの文字列をバイト配列に変換します。次に、この操作を 100 回ループし、各ループに必要な時間を出力します。
テスト結果によると、私のマシン (MacBook Pro、2.7GHz Intel Core i5、8GB RAM) では、この操作の平均実行時間は 7 ~ 8 ミリ秒です。
以上がPHP文字列をバイト配列に変換するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。