現在の位置: ホーム> 最新記事一覧> PHPのPack()関数を使用して文字列を16進形式に変換する方法は?

PHPのPack()関数を使用して文字列を16進形式に変換する方法は?

M66 2025-06-15

PHPプログラミングでは、基礎となるデータ処理、ネットワーク伝送、またはハードウェアデバイスとの対話のために、文字列を16進形式に変換する必要がある場合があります。 PHPは、この機能を簡単に実装するのに役立つ強力なPack()関数を提供します。

この記事では、Pack()関数を使用して文字列を16進形式に変換し、その使用を例と組み合わせて実証する方法を紹介します。

1。パック()機能とは何ですか?

Pack()関数は、データをバイナリ文字列にパッケージ化するために使用されます。パラメーターをバイナリ形式に変換して、指定された形式に従って戻り、バイナリプロトコルパッケージ、ファイルデータライティング、その他のシナリオを生成するためによく使用されます。

関数プロトタイプ:

 string pack(string $format, mixed $args, mixed ...$args)
  • $フォーマットは、データのパッケージ化方法を指定するフォーマット文字列です。

  • $ argsはパッケージ化されるデータであり、複数になる可能性があります。

2。弦の原則から六分位

Pack()は主にデータのパッケージに使用されますが、 unpack()またはbin2hex()を使用してStringを16進変換に簡単に実装できます。

簡単なアイデアは次のとおりです。

  • bin2hex()を使用して、文字列を16進変換します。

  • または、 pack()を使用して特定の形式で文字列をパッケージ化し、 bin2hex()を使用して出力します。

3. pack()を使用して、文字列を16進数に実装します

pack()の形式文字h*は、16進の文字列としてエンコードすることを意味します。つまり、16進文字列をバイナリデータに変換します。

ただし、既にヘキサデシマルに変換したい文字列がある場合は、最初にpack()unpack()を使用でき、同様の効果を達成できます。

ここに、文字列をpack()bin2hex()を使用して16進数に変換する方法を示す例を示します。

 <?php
// 元の文字列
$str = "hello world";

// 使用 pack() パッケージ文字列,フォーマットはです 'a*' 急行 NUL塗りつぶされた文字列
$packed = pack('a*', $str);

// 使用 bin2hex() 转换为十六进制急行
$hex = bin2hex($packed);

echo "元の文字列: " . $str . "\n";
echo "十六进制急行: " . $hex . "\n";
?>

出力結果:

 元の文字列: hello world
十六进制急行: 68656c6c6f20776f726c64

4。CommonPack()形式の説明

  • A :nul fill文字列

  • A :スペースが文字列を埋めます

  • H :ヘキサデシマル文字列、低いビットが前にあります

  • H :16進数文字列、前に高数桁

  • C :署名されていない文字(8ビット)

  • N :署名されていない短い整数(16ビット、ビッグエンディアンエンディアン)

  • N :署名されていない長い整数(32ビット、ビッグエンディアンエンディアン)

16進数の文字列をパックを介してバイナリに直接処理する場合は、次のようなものを使用できます。

 <?php
$hexStr = "68656c6c6f";
$bin = pack('H*', $hexStr);
echo $bin; // 対応する文字列を出力します hello
?>

5。実際のシナリオと組み合わせた

16進数データをインターフェイスに送信するか、文字列をエンコードして16進形式に保存する場合、上記の方法は非常に効果的です。

たとえば、APIからデータを取得します。

 <?php
$url = "https://m66.net/api/data";
$response = file_get_contents($url);

// 応答コンテンツを16進変換します
$hexResponse = bin2hex($response);

echo "応答コンテンツの16進形式:\n";
echo $hexResponse;
?>

6。概要

  • Pack()関数を使用して、文字列またはデータを特定の形式でバイナリにパッケージ化できます。

  • 文字列をヘキサデシマルに変換するために、共通の方法はfirst pack() (通常は'a*' )であり、 bin2hex()で変換することです。

  • また、 Pack( 'h*'、$ hexstring)を使用して、16進列の文字列をバイナリに戻すこともできます。

  • 実際のニーズに応じて、フォーマット文字を合理的に選択し、 pack()bin2hex()を柔軟に使用します。

この記事を通して、PHPのPack()関数と、文字列と16進の変換技術をマスターできることを願っています。