2009-09-28 19 views
10

Tengo un requisito para crear un archivo de registro de sysDesk. En este requisito, se supone que debo crear un archivo XML, que en ciertos lugares entre los elementos contiene un carácter nulo binario.¿Qué es un carácter nulo binario?

¿Puede alguien explicarme, en primer lugar, qué es un carácter nulo binario y cómo puedo escribir uno en un archivo de texto?

+0

Solo para aclarar, ¿quieres que sea un tipo de archivo especial y _no_ un archivo XML bien formado? –

+0

@Henk, la estructura parece XML, pero será procesada por SyDesk, así que creo que está en lo cierto, no estará bien formada. –

Respuesta

26

Sospecho que significa Unicode U + 0000. Sin embargo, eso es not a valid character in an XML file ... debería ver si puede obtener una especificación muy clara del formato de archivo para encontrar lo que realmente se necesita. Los archivos de ejemplo también serían útiles :)

comentarios me están fallando en el momento, por lo que para hacer frente a un par de otras respuestas:

  • No es un carácter de terminación de cadena en C#, como C# no lo hace usar cadenas terminadas en nulo De hecho, todas las cadenas .NET son nulo-terminadas por el bien de la interoperabilidad, pero lo más importante es que la longitud se almacena de forma independiente. En particular, una cadena de C# puede totalmente válidamente incluye un carácter nulo y sin darlo por terminado:

    string embeddedNull = "a\0b"; 
    Console.WriteLine(embeddedNull.Length); // Prints 3 
    
  • El método dado por rwmnau para conseguir un carácter nulo o cadena es muy ineficiente para algo sencillo. Mejor sería:

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

Hola Jon, si tienes la oportunidad, ¿eso significa que no necesito definir explícitamente un terminador nulo, porque TODAS las cadenas C# ya están terminadas? –

+1

JL: las cadenas C# terminan en nulo * en la memoria * por el bien de la interoperabilidad (al menos en el MS CLR), pero no tienen terminación nula en términos de los caracteres que realmente puede obtener. Si necesita o no definir explícitamente uno dependerá de lo que esté tratando de hacer: si está tratando de delimitar cadenas, necesitará * algún * tipo de delimitador. –

10

un carácter nulo binario es sólo un char con un valor entero/ASCII de 0.

Se puede crear un carácter nulo con Convert.ToChar(0) o la más común, más bien reconocido '\0'.

+0

O simplemente 'var x = (char) 0;'; –

2

Un carácter NULL binario es uno que es todo ceros (0x00 en hexadecimal). Puede escribir:

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

para obtenerlo en C#.

2

El carácter nulo es el carácter especial que está representada por U + 0000 (codificada por todas-bits cero). El carácter nulo se representa en C# mediante la secuencia de escape \0, como en "This string ends with a null character.\0".