2008-09-16 17 views
2

生のバイト/バイトストリームをファイル内のある位置に書きたいと思っています。PHPファイルapiを使用して生のバイトを書き込むにはどうすればよいですか?

$fpr = fopen($out, 'r+'); 
fseek($fpr, 1); //seek to second byte 
fwrite($fpr, 0x63); 
fclose($fpr); 

は、これは、現在、それはバイト「9」と「9」を書き込み、1 IEのバイトオフセットから始まる「99」の実際の文字列値を書き込みます は、これは私が現在持っているものです。実際に1バイトの値0x63を書き、数字99を表すようにしたいだけです。

ありがとうございました。

答えて

7

fwrite()は文字列を取ります。ファイルに0x63バイトを書き込む場合は、chr(0x63)を試してください。

1

文字列を受け入れる関数にintを渡そうとしているため、文字列に変換されています。

これは、あなたが望むものを書きます:fwriteの()は2番目の引数として文字列を想定しているため

fwrite($fpr, "\x63"); 
4

だこと。これを代わりに実行してください:

fwrite($fpr, chr(0x63)); 

chr(0x63)は、ASCII値0x63の1文字の文字列を返します。 (したがって、ファイルに番号0x63を書きます。)

+0

エンドエンティティによって異なります。 – Christian

0

実際にバイナリファイルに書きたい場合は、ファイルAPIと共にpack()アプローチを使用することをお勧めします。例:

See this question

関連する問題