El carácter nulo (también terminador nulo ) es un carácter de control con el valor cero. [1] [2] [3] [4] Está presente en muchos conjuntos de caracteres , incluidos los definidos por los códigos Baudot e ITA2 , ISO/IEC 646 (o ASCII ), el código de control C0 , el conjunto de caracteres codificados universales (o Unicode ) y EBCDIC . Está disponible en casi todos los lenguajes de programación principales . [5] A menudo se abrevia como NUL (o NULL , aunque en algunos contextos ese término se usa para el puntero nulo ). En códigos de 8 bits, se conoce como byte nulo .
El significado original de este carácter era como NOP : cuando se envía a una impresora o terminal , no tiene efecto (algunos terminales, sin embargo, lo muestran incorrectamente como espacio ). Cuando se usaban teleimpresoras electromecánicas como dispositivos de salida de computadora, se enviaban uno o más caracteres nulos al final de cada línea impresa para dar tiempo al mecanismo a regresar a la primera posición de impresión en la siguiente línea. [ cita requerida ] En la cinta perforada , el carácter se representa sin agujeros en absoluto, por lo que una nueva cinta sin perforar se llena inicialmente con caracteres nulos y, a menudo, se puede insertar texto en un espacio reservado de caracteres nulos perforando los nuevos caracteres en la cinta sobre los nulos.
Hoy en día, el carácter tiene mucho más significado en el lenguaje de programación C y sus derivados y en muchos formatos de datos, donde sirve como un carácter reservado utilizado para significar el final de una cadena , [6] a menudo llamada cadena terminada en nulo . [7] Esto permite que la cadena tenga cualquier longitud con solo la sobrecarga de un byte; la alternativa de almacenar un recuento requiere un límite de longitud de cadena de 255 o una sobrecarga de más de un byte (hay otras ventajas/desventajas descritas en el artículo sobre cadenas terminadas en nulo ).
En el código fuente , el carácter nulo se representa a menudo como la secuencia de escape \0
en literales de cadena (por ejemplo, "abc\0def"
) o en constantes de caracteres ( '\0'
); este último también puede escribirse simplemente como 0
(sin comillas ni barra). [8] En muchos lenguajes ( como C , que introdujo esta notación), esta no es una secuencia de escape separada, sino una secuencia de escape octal con un solo dígito octal 0; como consecuencia, \0
no debe ser seguido por ninguno de los dígitos 0
hasta 7
; de lo contrario, se interpreta como el comienzo de una secuencia de escape octal más larga. [9] Otras secuencias de escape que se encuentran en uso en varios lenguajes son \000
, \x00
, \z
o \u0000
. Un carácter nulo se puede colocar en una URL con el código de porcentaje %00
.
La capacidad de representar un carácter nulo no siempre significa que la cadena resultante se interpretará correctamente, ya que muchos programas considerarán que el carácter nulo es el final de la cadena. Por lo tanto, la capacidad de escribirlo (en caso de entrada no verificada por el usuario ) crea una vulnerabilidad conocida como inyección de bytes nulos y puede dar lugar a ataques de seguridad. [10]
En la notación de intercalación, el carácter nulo es ^@
. En algunos teclados, se puede ingresar un carácter nulo manteniendo presionada la tecla Ctrly presionando (en los diseños de EE. UU. , generalmente funciona el signo + , sin necesidad de obtener el signo @).@Ctrl2⇧ Shift
La notación hexadecimal para null es 00
. Al decodificar la cadena Base64AA==
también se obtiene el carácter null.
En la documentación, el carácter nulo se representa a veces como un símbolo de un solo ancho que contiene las letras "NUL". En Unicode , hay un carácter para esto: U+2400 ␀ SÍMBOLO PARA NULO .
En todos los conjuntos de caracteres modernos, el carácter nulo tiene un valor de punto de código de cero. En la mayoría de las codificaciones, esto se traduce a una sola unidad de código con un valor cero. Por ejemplo, en UTF-8 es un solo byte cero. Sin embargo, en UTF-8 modificado, el carácter nulo se codifica como dos bytes: 0xC0,0x80 . Esto permite que el byte con el valor de cero, que ahora no se utiliza para ningún carácter, se utilice como terminador de cadena.
NUL (Nulo): El carácter compuesto exclusivamente por ceros que puede servir para completar el llenado de tiempo y de medios.
Posición: 0/0, Nombre: Null, Abreviatura: Nul
Una
cadena de bytes terminada en nulo
, o NTBS, es una secuencia de caracteres cuyo elemento de dirección más alta con contenido definido tiene el valor cero (el
carácter nulo de terminación
); ningún otro elemento en la secuencia tiene el valor cero.