El carácter nulo (también terminador nulo ) es un carácter de control con valor cero. [1] [2] [3] [4] Está presente en muchos juegos de caracteres , incluidos los definidos por los códigos Baudot e ITA2 , ISO/IEC 646 (o ASCII ), el código de control C0 , el juego de caracteres codificados universal ( o Unicode ) y EBCDIC . Está disponible en casi todos los lenguajes de programación convencionales . [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 le conoce como byte nulo .
El significado original de este carácter era como NOP : cuando se envía a una impresora o a una terminal , no tiene ningún efecto (algunos terminales, sin embargo, lo muestran incorrectamente como un espacio ). Cuando se utilizaban teleimpresores electromecánicos 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 necesaria ] En la cinta perforada , el carácter se representa sin ningún agujero, por lo que una nueva cinta no perforada 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 el 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 indicar 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 a menudo se representa como la secuencia de escape \0
en cadenas literales (por ejemplo, "abc\0def"
) o en constantes de caracteres ( '\0'
); este último también se puede escribir 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; en consecuencia, \0
no debe ir seguido de 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 idiomas son \000
, \x00
, \z
o \u0000
. Se puede colocar un carácter nulo 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 que el usuario ingrese datos sin verificar ) crea una vulnerabilidad conocida como inyección de bytes nulos y puede provocar vulnerabilidades de seguridad. [10]
En notación de intercalación el carácter nulo es ^@
. En algunos teclados, se puede ingresar un carácter nulo manteniendo presionado Ctrly presionando (en los diseños de EE. UU., a menudo solo + funcionará, no es necesario obtener el signo @).@Ctrl2⇧ Shift
La notación hexadecimal para nulo es 00
. La decodificación de la cadena Base64AA==
también produce el carácter nulo.
En la documentación, el carácter nulo a veces se representa como un símbolo de ancho único em que contiene las letras "NUL". En Unicode , hay un carácter para esto: U+2400 ␀ .
En todos los juegos 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 única unidad de código con un valor cero. Por ejemplo, en UTF-8 es un único 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 cero, que ahora no se usa para ningún carácter, se use como terminador de cadena.
NUL (nulo): el carácter de ceros que puede servir para lograr el llenado de tiempo y de medios.
Posición: 0/0, Nombre: Nulo, Abreviatura: Nul
Una
cadena de bytes terminada en nulo
, o NTBS, es una secuencia de caracteres cuyo elemento con la dirección más alta y contenido definido tiene el valor cero (el
carácter nulo de terminación
);
ningún otro elemento de la secuencia tiene el valor cero.