2009-09-28 10 views
10

私はsysDeskログファイルを作成する必要があります。この要件では、要素間の特定の場所にバイナリヌル文字が含まれているXMLファイルを作成することになっています。バイナリヌル文字とは何ですか?

誰かが私に説明してください、まずバイナリヌル文字とは何ですか、テキストファイルに書き込む方法はありますか?

+0

明確にするために、特殊なファイルタイプであり、整形式のXMLファイルではないことを望みますか? –

+0

@Henk、構造はXMLのように見えますが、SyDeskで消化されるので正しいと思います。 –

答えて

26

私はそれがUnicode U + 0000を意味すると考えます。しかし、それはnot a valid character in an XML file ...実際に必要とされるものを解決するためのファイルフォーマットの非常に明確な仕様を得ることができるかどうかが分かります。サンプルファイルにも有用であろう:)

コメントはそう他の回答のカップルに対処するため、現時点では私を失敗している:

  • C#がないとそれは、C#で文字列の終端文字はありませんヌルで終了する文字列を使用します。実際には、すべての.NET文字列は、interopのためにNULL終端されたですが、もっと重要なのは長さが独立して格納されていることです。具体的には、C#の文字列がは完全に正当は、それを終了させずにヌル文字を含めることができます。

    string embeddedNull = "a\0b"; 
    Console.WriteLine(embeddedNull.Length); // Prints 3 
    
  • ヌル文字または文字列を取得するためrwmnauによって与えられた方法は、単純な何かのために非常に非効率的です。良いだろう:

    string justNullString = "\0"; 
    char justNullChar = '\0'; 
    
+0

こんにちはJon、チャンスがあれば、ヌルターミネータを明示的に定義する必要はありません。なぜなら、すべてのC#文字列はすでにヌル終了しているからですか? –

+1

JL:interopのために(少なくともMS CLR上で)C#文字列はメモリで*終わる*が発生しますが、実際に得ることができる文字に関してはNULLで終了しません。明示的に定義する必要があるかどうかは、実行しようとしていることに依存します。文字列を区切りたい場合は、デリミタを使用する必要があります。 –

10

バイナリのヌル文字は、あなたがConvert.ToChar(0)以上の一般的な、よりよく認識'\0'とヌル文字を作成することができます0

の整数/ ASCII値を持つだけの文字です。

+0

または単に 'var x =(char)0;'; –

2

バイナリNULL文字は、すべてがゼロ(1進数で0x00)の文字です。あなたは書くことができます:

System.Text.Encoding.ASCII.GetChars(new byte[] {00}); 

これをC#で入手してください。

2

ヌル文字U +(全てゼロのビットによってコードされる)0000で示されるの特別な文字です。ヌル文字は、C#でエスケープシーケンス\0"This string ends with a null character.\0")のように表されます。

関連する問題