PHP で文字列をバイナリに変換して戻すにはどうすればよいですか?

DDD
リリース: 2024-11-04 03:52:30
オリジナル
675 人が閲覧しました

How to Convert Strings to Binary and Back in PHP?

PHP でのバイナリと文字列の変換: 総合ガイド

PHP でデータを操作する場合、多くの場合、異なる形式間の変換が必要になります。一般的な変換の 1 つは、文字列とバイナリ間の変換です。データを安全に保存するためでも、パフォーマンスを最適化するためでも、これらの形式間の変換方法を理解することが不可欠です。

問題:

文字列をバイナリに変換し、その後文字列に戻す方法標準のPHPライブラリにあるのでしょうか?これは、安全なデータの保存と操作に対する一般的なニーズです。

解決策:

一部のプログラミング言語とは異なり、PHP には文字列をバイナリに直接変換する組み込み関数がありません。ただし、pack() 関数とbase_convert() 関数を組み合わせることで、この機能を実現できます。

Binary to String:

バイナリ文字列を元の文字列に変換するには、pack を使用できます。 () とbase_convert()。 Pack() 関数は、フォーマット文字列とバイナリ データの文字列を受け取り、それらを組み合わせて文字列を作成します。この場合、フォーマット文字列は「H*」で、16 進文字列を示します。 Base_convert() 関数は、文字列をある塩基から別の塩基に変換します。この場合、16 進文字列を ASCII 文字セットに変換します。

<code class="php">// Convert binary into a string
$string = pack('H*', base_convert('0101001101110100011000010110001101101011', 2, 16));</code>
ログイン後にコピー

文字列をバイナリに変換します。

文字列をバイナリに変換するには、unpack() とbase_convert() を使用できます。 )。 unpack() 関数は、フォーマット文字列と文字列を受け取り、指定されたフォーマットに従って文字列からデータを抽出します。この例では、16 進データを抽出するために形式「H*」を指定します。 Base_convert() 関数は、文字列をある塩基から別の塩基に変換します。ここでは、ASCII 文字列をバイナリ表現を表す 16 進文字列に変換します。

<code class="php">// Convert a string into binary
$binary = unpack('H*', 'Stack');
echo base_convert($binary[1], 16, 2);</code>
ログイン後にコピー

例:

例を使ってすべてをまとめてみましょう:

<code class="php">// Convert "Stack" to binary
$binary = unpack('H*', 'Stack');
$binaryString = base_convert($binary[1], 16, 2);
echo "Binary: $binaryString\n";

// Convert binary back to "Stack"
$asciiString = pack('H*', base_convert($binaryString, 2, 16));
echo "String: $asciiString\n";</code>
ログイン後にコピー

出力:

Binary: 0101001101110100011000010110001101101011
String: Stack
ログイン後にコピー

これらの関数を利用することで、効率的に変換できます。 PHP の文字列とバイナリの間。この知識は、データ暗号化、ファイル操作、その他のさまざまなタスクに非常に役立ちます。

以上がPHP で文字列をバイナリに変換して戻すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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