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

王林
リリース: 2023-05-07 14:46:08
オリジナル
923 人が閲覧しました

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 サイトの他の関連記事を参照してください。

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