4

16 進文字列からバイナリ ファイルを書き込もうとしています。たとえば、16 進文字列がC27EF0ECの場合、16 進ファイルには、、、および の ASCII 文字が含まれている必要あります。 でこれを行うにはどうすればよいですか?C27EF0EC
PHP

これが私が試したことです:

$s="";
for ($i=0; $i<count($h); $i++) {
    $s+=pack("C*", "0x".$h[$i]);
}
$f2=fopen("codes0", "wb+");
fwrite($f2, $s);
4

2 に答える 2

2

したがって、最初に行う必要があるのは、単一の文字列をstr_split.

$hex_bytes = str_split($h, 2);

次に、これらの各値を 16 進文字列から対応する数値に変換しhexdecます。

$code_array = array_map(hexdec, $hex_bytes);

次に、これらの文字コードのそれぞれに対応するバイト値が必要です。これは、次のコマンドで取得できますchr

$char_array = array_map(chr, $code_array);

最後に、これらすべてのバイトを 1 つの文字列に結合する必要があります。これはimplode.

$s = implode($char_array);

上記の手順をその順序で使用することも、次のようにすべてを 1 つの式にまとめることもできます。

$s = implode(array_map(chr, array_map(hexdec, str_split($h,2))));

0x7F を超える値を取得するとすぐに、「ASCII」ではなくなることに注意してください。

于 2012-12-23T20:08:08.087 に答える