2011-02-03 8 views
2

NULL文字をテキストファイルに書き込む方法は?NULL文字のエンティティ

私はプレーンテキストで表現されていることを意味します...それは意味がありますか?例えば - URLでそれは%00

答えて

5

NULLは、私はあなたのユースケースを知っているが、この例を考慮していないASCII 0x00の

fwrite($fh,chr(0)); 
+1

「\ 0」を使用することもできます。これは、sprintfを使用している場合に便利です。 – Leigh

2

エスケープシーケンス\0

printf("\0"); 
0
fwrite($fh, chr(0)); 
//or 
fwrite($fh, "\0"); 
//or 
fwrite($fh, "\x0"); 
0

あるだろう:あなたは整数のファイル配列に書き込む必要があり、配列メンバのいくつかはNULLかもしれません。あなたは(1バイトである)\ 0としてNULL書き込み、整数は32ビット(4バイト)である:最初のアレイメンバー

AA 22 BB 44 00 51 27 AF 1A ...今

は、AA 22でありますBB 44では、2番目の値はNULLまたは00 51 27 AF(有効な整数値)です。 \ 0 \ 0 \ 0 \ 0をNULLとして使用した場合、問題は解決されません。これは再び有効な整数値なのでです。

私の意見では、シリアル化を使用した方が良いでしょう。

+0

数値をバイナリとして書くことに問題がある場合、pack()を使用する必要があります。http://uk3.php.net/manual/en/function.pack.phpドキュメントの「注意」に注意してください –

+0

私はpack()がこの特定の場合に役立つとは思わない。 pack()は固定フォーマットが必要ですが、この場合はありません。あなたは32ビット整数でNULLを表現することはできません。この問題がどのように解決されているかに注目してください。 MySQLで。 32ビット整数は実際には33ビットであり、最後のビットはNULL値を表すために使用されます。したがって、pack()では似たようなことが必要ですが、serialize()ではそうではありません。出力サイズが重要な場合にのみ、pack()が優れています。 – Tomik

関連する問題