C# 什么是二进制空字符?

C# 什么是二进制空字符?,c#,C#,我需要创建一个sysDesk日志文件。在这个需求中,我应该创建一个XML文件,在元素之间的某些位置包含一个二进制空字符 有人能给我解释一下,首先什么是二进制空字符,以及如何将其写入文本文件?二进制空字符只是一个整数/ASCII值为0的字符 您可以使用Convert.ToChar(0)或更常见、更容易识别的'\0'创建空字符。二进制空字符是一个全零的字符(十六进制中的0x00)。你可以写: System.Text.Encoding.ASCII.GetChars(new byte[] {00});

我需要创建一个sysDesk日志文件。在这个需求中,我应该创建一个XML文件,在元素之间的某些位置包含一个二进制空字符


有人能给我解释一下,首先什么是二进制空字符,以及如何将其写入文本文件?

二进制空字符只是一个整数/ASCII值为0的字符


您可以使用
Convert.ToChar(0)
或更常见、更容易识别的
'\0'

创建空字符。二进制空字符是一个全零的字符(十六进制中的0x00)。你可以写:

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

用C#

表示,我怀疑它的意思是Unicode U+0000。然而,那是。。。您应该看看是否可以获得非常清晰的文件格式规范,以确定实际需要的内容。示例文件也很有用:)

目前我对这些评论感到失望,因此,我想谈谈其他几个答案:

  • 它不是C#中的字符串终止字符,因为C#不使用以null结尾的字符串。事实上,为了互操作,所有.NET字符串都以null结尾,但更重要的是,长度是独立存储的。特别是,C#字符串可以完全有效地包含空字符而不终止它:

    string embeddedNull = "a\0b";
    Console.WriteLine(embeddedNull.Length); // Prints 3
    
  • rwmnau给出的获取空字符或字符串的方法对于一些简单的事情来说效率很低。最好是:

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

空字符是由U+0000(由所有零位编码)表示的特殊字符。空字符在C#中由转义序列
\0
表示,如
“此字符串以空字符结尾。\0”

只是澄清一下,您希望它是某种特殊的文件类型,而不是格式良好的XML文件吗?@Henk,该结构看起来像XML,但它将被SyDesk消化,所以我认为您是正确的,它的格式不会很好。嗨,Jon,如果你有机会的话,这是否意味着我不需要显式定义空终止符,因为所有的C#字符串都已经以空结尾了?JL:C#字符串恰好在内存中以空结尾以实现互操作(至少在MS CLR上),但它们并不是以null结尾的,因为实际上可以获取字符。您是否需要显式定义一个将取决于您尝试执行的操作-如果您尝试对字符串进行分隔,则需要某种类型的分隔符