PHP ファイル API を使用して生のバイトを書き込むにはどうすればよいですか?
質問
生のバイト/バイト ストリームをファイル内の特定の位置に書き込みたいと考えています。これは私が現在持っているものです:
$fpr = fopen($out, 'r+');
fseek($fpr, 1); //seek to second byte
fwrite($fpr, 0x63);
fclose($fpr);
これにより、現在、バイト オフセット 1 から始まる実際の文字列値「99」が書き込まれます。IE の場合、バイト「9」と「9」を書き込みます。たまたま番号 99 を表す実際の 1 バイト値 0x63 を書き込みたいだけです。
御時間ありがとうございます。
解決
fwrite()
文字列を受け取ります。試す chr(0x63)
を書きたい場合は 0x63
ファイルへのバイト。
他のヒント
これは、 fwrite() が 2 番目の引数として文字列を想定しているためです。代わりにこれを実行してみてください。
fwrite($fpr, chr(0x63));
chr(0x63) は、ASCII 値 0x63 の 1 文字を含む文字列を返します。(つまり、数値 0x63 がファイルに書き込まれます。)
文字列を受け入れる関数に int を渡そうとしているので、文字列に変換されます。
これにより、必要なものが書き込まれます:
fwrite($fpr, "\x63");
本当にバイナリをファイルに書き込みたい場合は、次のコマンドを使用することをお勧めします。 pack()
ファイル API と組み合わせてアプローチします。
この質問を参照してください たとえば。
所属していません StackOverflow