java - ¿Dónde está el código hexadecimal del carácter "EOF"?
c++ text-files (6)
El byte EOT
( 0x04
) se usa hoy en día por los terminales unix tty para indicar el final de la entrada. Lo escribe con Ctrl + D (es decir, ^D
) para finalizar la entrada a shells o cualquier otra lectura de programa desde stdin.
Sin embargo, como otros han señalado, esto es distinto de EOF, que es una condición en lugar de un dato en sí mismo.
Por lo que sabemos al final de todos los archivos, especialmente los archivos de texto, hay un código hexadecimal para EOF o carácter NULL . Y cuando queremos escribir un programa y leer el contenido de un archivo de texto, enviamos la función de lectura hasta que recibamos ese hexcode EOF.
Mi pregunta: descargué algunas herramientas para ver una vista hexadecimal de un archivo de texto. pero no puedo ver ningún código hexadecimal para EOF (Fin del archivo / NULL) o EOT (Fin del texto)
Tablas de códigos ASCII / Hex:
Esta es la salida de las herramientas del visor Hex:
Nota: Mi archivo de entrada es un archivo de texto cuyo contenido es "¿Dónde está el código hexadecimal de" EOF "?"
Aprecia tu tiempo y consideración.
Hubo una vez incluso diferentes caracteres EOF (para diferentes sistemas operativos). Ya no se ve uno. (Normalmente, los archivos estaban en bloques de 128 bytes). Para codificar un PITA, como las listas de materiales de hoy en día.
En cambio, todavía hay un int read()
que normalmente entrega un valor byte, pero para EOF entrega -1.
El carácter NUL es un terminador de cadena en C. En Java, puede tener un carácter NUL en el medio de una cadena. Para cooperar con C, los bytes UTF-8 generados usan una codificación de múltiples bytes tanto para caracteres Unicode> 127 como para NUL.
(Algo de esto es probablemente ya conocido).
Hubo, hace mucho tiempo, un marcador de fin de archivo pero no se ha usado en archivos durante muchos años.
Puedes demostrar un eco distante de él en Windows usando:
C:/>copy con junk.txt
Hello
Hello again
- Press <Ctrl> and <z>
C:/>dump junk.txt
junk.txt:
00000000 4865 6c6c 6f0d 0a48 656c 6c6f 2061 6761 Hello..Hello aga
00000010 696e 0d0a in..
C:/>
Tenga en cuenta el uso de Ctrl-Z
como un marcador EOT.
Sin embargo, tenga en cuenta también que Ctrl-Z
ya no aparece en el archivo; solía aparecer como 0x1a
pero solo en algunos sistemas operativos e incluso de forma no sistemática.
El uso de ETX
( 0x03
) se detuvo incluso antes de esos tiempos tenues y distantes.
Necesita el carácter de fin de archivo en ciertas instancias, por ejemplo, enviar un archivo a una impresora desde una computadora Unix. La mayoría de las impresoras habilitadas para Windows / DOS esperan que el marcador de fin de archivo imprima el archivo almacenado en sus memorias. Si no se envía un marcador de fin de archivo, la impresora se queda hasta que se agota el tiempo de espera (normalmente 2 minutos) y luego imprime el archivo. Si usa lpr para imprimir desde Unix, debe asegurarse de incluir el marcador de fin de archivo. Windows / dos lo conectan automáticamente y las impresoras están diseñadas para esperarlo.
No hay tal cosa como EOF. EOF es solo un valor devuelto por las funciones de lectura de archivos para indicarle que el puntero del archivo llegó al final del archivo.
No hay tal cosa como un personaje EOF . El sistema operativo sabe exactamente cuántos bytes contiene un archivo (esto se almacena junto con otros metadatos como permisos, fecha de creación y nombre) y, por lo tanto, puede indicarle a los programas que intentan leer el undécimo byte de un archivo de diez bytes: llegó al final del archivo, no hay más bytes para leer.
De hecho, el valor "EOF" devuelto, por ejemplo, por funciones C, como getchar
es explícitamente un valor int
fuera del rango de un byte , por lo que no puede almacenarse en un archivo.
Algunas veces, ciertos formatos de archivo insisten en agregar terminadores NUL (probablemente porque así es como las cadenas generalmente se almacenan en C), aunque generalmente estos delimitan múltiples registros en un solo archivo, no el archivo como un todo. Y tal decoración por lo general descalifica a un archivo de ser considerado un "archivo de texto".
Los códigos ASCII como ETX y NUL se remontan a los días de los teletipos y amigos. NUL se usa en C para cadenas en memoria , pero esto no tiene relación con los sistemas de archivos.