JL.
JL.

Reputation: 81342

What is a binary null character?

I have a requirement to create a sysDesk log file. In this requirement I am supposed to create an XML file, that in certain places between the elements contains a binary null character.

Can someone please explain to me, firstly what is a binary null character, and how can I write one to a text file?

Upvotes: 16

Views: 39616

Answers (4)

Mark Rushakoff
Mark Rushakoff

Reputation: 258348

A binary null character is just a char with an integer/ASCII value of 0.

You can create a null character with Convert.ToChar(0) or the more common, more well-recognized '\0'.

Upvotes: 15

Jon Skeet
Jon Skeet

Reputation: 1502036

I suspect it means Unicode U+0000. However, that's not a valid character in an XML file... you should see if you can get a very clear specification of the file format to work out what's actually required. Sample files would also be useful :)

Comments are failing me at the moment, so to address a couple of other answers:

  • It's not a string termination character in C#, as C# doesn't use null-terminated strings. In fact, all .NET strings are null-terminated for the sake of interop, but more importantly the length is stored independently. In particular, a C# string can entirely validly include a null character without terminating it:

    string embeddedNull = "a\0b";
    Console.WriteLine(embeddedNull.Length); // Prints 3
    
  • The method given by rwmnau for getting a null character or string is very inefficient for something simple. Better would be:

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

Upvotes: 35

Joren
Joren

Reputation: 14746

The null character is the special character that's represented by U+0000 (encoded by all-zero bits). The null character is represented in C# by the escape sequence \0, as in "This string ends with a null character.\0".

Upvotes: 2

SqlRyan
SqlRyan

Reputation: 33924

A binary NULL character is one that's all zeros (0x00 in Hex). You can write:

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

to get it in C#.

Upvotes: 2

Related Questions