2

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

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

これは現在、バイトオフセット1から始まる実際の文字列値「99」を書き込みます。IE、バイト「9」と「9」を書き込みます。たまたま99番を表す実際の1バイト値0x63を書きたいだけです。

御時間ありがとうございます。

4

4 に答える 4

7

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

于 2008-09-16T21:54:15.040 に答える
4

これは、fwrite() が 2 番目の引数として文字列を想定しているためです。代わりにこれを試してください:

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

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

于 2008-09-16T21:57:03.037 に答える
1

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

これはあなたが望むものを書きます:

fwrite($fpr, "\x63");
于 2008-09-16T21:54:51.670 に答える
0

本当にバイナリをファイルに書き込みたい場合は、このpack()アプローチをファイル API と一緒に使用することをお勧めします。

例については、この質問を参照してください。

于 2012-01-22T21:47:49.820 に答える