PHP ファイル API を使用して生のバイトを書き込むにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/77558

  •  09-06-2019
  •  | 
  •  

質問

生のバイト/バイト ストリームをファイル内の特定の位置に書き込みたいと考えています。これは私が現在持っているものです:

$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 と組み合わせてアプローチします。

この質問を参照してください たとえば。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top