¿Por qué los editores hexadecimales se llaman editores binarios?

84

Hex y binario son dos bases diferentes. Hex, en mi opinión, es simplemente una versión más fácil de usar y más conveniente de binario.

Sin embargo, a menudo escucho que los editores hexadecimales son editores binarios. Si busca "editor binario" en Google, obtendrá editores hexadecimales.

Joseph A.
fuente
3
Hex es una representación algo legible de datos binarios.
Salman A

Respuestas:

188

Un editor binario edita un archivo como un archivo binario .

Archivo binario - Wikipedia

Un archivo binario es un archivo de computadora que no es un archivo de texto. El término "archivo binario" se usa a menudo como un término que significa "archivo que no es de texto" [y] generalmente se considera una secuencia de bytes. ... Los archivos binarios generalmente contienen bytes destinados a ser interpretados como algo diferente a los caracteres de texto.

Un editor hexadecimal es un tipo de editor binario en el que los datos se representan como hexadecimales .

Editor hexadecimal - Wikipedia

Un editor hexadecimal (o binario editor de archivos o editor de bytes ) es un tipo de programa informático que permite la manipulación de los datos binarios fundamental que constituye un archivo de computadora. El nombre 'hexadecimal' proviene de 'hexadecimal': una representación estándar para números que tiene 16 como base.

Steven
fuente
85

La terminología es difícil. Diferentes personas tienen todo tipo de nombres diferentes para las cosas.

En este caso, parece que el hexadecimal en "editor hexadecimal" se refiere a la representación legible por humanos convencional del valor de cada byte, mientras que el binario en "editor binario" se refiere a la noción de que realmente está editando el archivo en el byte capa (y las computadoras almacenan bytes en binario), sin tener en cuenta la codificación de texto de nivel superior y similares. Recuerde que los archivos que no son fácilmente representables en forma de texto de nivel superior se denominan "archivos binarios" o "binarios", por la misma razón.

Ninguno de los dos es técnicamente incorrecto; simplemente llegan al problema de nombres desde diferentes ángulos. Sin embargo, en una nota personal, tendería a estar de acuerdo en que "editor binario" es confuso en términos de equilibrio.

Carreras de ligereza en órbita
fuente
58

Visualización del editor binario (en binario)

00000000 | 11111011 11111011 11111011 11111011 11110101 11111011 11111011 11111011
00001000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00010000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00011000 | 11110101 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00100000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00101000 | 11111011 11111011 11101111 11111011 11111011 11111011 11111011 11111011
00110000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00111000 | 11111011 11111011 11111011 11101111 11111011 11111011 11111011 11111011
01000000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
01001000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
01010000 | 11101111 11111011 11111011 11111011 11111011 11111011 11111011 11111011
01011000 | 11101111 11111011 11111011 11111011 11111011 11111011 11111011 11111011
01100000 | 11111011 11111011 11111011 11111011 11111011 11101111 11111011 11111011
01101000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011

Visualización del editor binario (en hexadecimal)

00 | fb fb fb fb f5 fb fb fb fb fb fb fb fb fb fb fb
10 | fb fb fb fb fb fb fb fb f5 fb fb fb fb fb fb fb 
20 | fb fb fb fb fb fb fb fb fb fb ef fb fb fb fb fb 
30 | fb fb fb fb fb fb fb fb fb fb fb ef fb fb fb fb 
40 | fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb 
50 | ef fb fb fb fb fb fb fb ef fb fb fb fb fb fb fb 
60 | fb fb fb fb fb ef fb fb fb fb fb fb fb fb fb fb

Es cierto que un editor binario debería permitirle manejar bytes en binario, pero como puede ver, la base 2 es demasiado pequeña para dar números compactos.

Binario como crudo, no base dos

En términos generales, entonces " binario " en el editor binario no se refiere a la base dos, en realidad es el antónimo de " editor de texto ".
La diferencia es que los editores de texto están diseñados para mostrar texto, por lo que no se requiere que los caracteres que no se imprimen, las líneas nuevas, los caracteres de control, las unidades de código utf-8 no válidas, etc., se manejen de manera segura.
El simple acto de abrir un archivo y guardarlo inmediatamente puede cambiarlo (debido a las conversiones internas del editor, fallas).

Los editores binarios, por otro lado, no intenten proporcionar datos semánticos y permitan que el usuario los maneje de forma segura como una secuencia de bytes / bits / palabras.

Editores hexadecimales

El editor binario perfecto conocería todos los formatos binarios posibles y le permitiría editarlo, pero dado que todos pueden crear su propio formato binario y dado que cambian muy a menudo, es inútil intentar admitir todos los formatos.
Lo mejor que un editor podría hacer es mostrar los bytes en sí mismos, y debido a las propiedades de la base 16, ya discutidas, ¡los números hexadecimales son muy útiles!

Además, un usuario experimentado puede traducir mentalmente bin a hexadecimal mientras lo lee.
Establecer / obtener un poco de un byte escrito en hexadecimal no requiere realmente más esfuerzo que un byte escrito en bin.
Para ser honesto, he encontrado el hexadecimal más fácil que el binario para leer.

Margaret Bloom
fuente
1
Buenos ejemplos que muestran la diferencia.
Verlos
1
@DrZoo A menos que esté tratando con campos de bits, ¡en cuyo caso la representación binaria es mucho mejor! en.wikipedia.org/wiki/Bit_field .
misha256
66
misha256: honestamente, cuando miro hexadecimal, veo binario. Leí "f" pero mi cerebro inmediatamente dice "1111". Es como ver la matriz en forma compacta. :)
tdrury
44
+1 por enfatizar "Binario como crudo, no base dos"
Kelvin
55
Buen punto de @tdrury, supongo que después de un tiempo simplemente comienzas a "ver" lo que necesitas ver, independientemente de cómo se exprese. Jaja, sí, Matrix! Me recuerda a un chico con el que fui a la escuela que felizmente codificaba el lenguaje de máquina en hexadecimal o decimal y podía convertirse libremente entre los dos. Sabía todos los códigos de operación de memoria y vio campos de bits y otras estructuras de datos empaquetadas como si fuera su primer idioma. Esos fueron los 64 días de Commodore (días mucho más simples), pero aún así un talento impresionante.
misha256
15

¿Por qué los editores hexadecimales se llaman editores binarios?

Resumen:

Un editor hexadecimal se usa para editar directamente un archivo binario mostrando el contenido binario en formato hexadecimal y permitiendo que estos números hexadecimales se cambien.

Notas:

  • Hex Editors permite editar el contenido de datos sin procesar de un archivo, en lugar de otros programas que intentan interpretar los datos.

  • Editores hexadecimales como también llamados editores binarios o editores de bytes.

  • Llamarlos Editores binarios o Editores de bytes no es realmente correcto ya que los editores están cambiando números hexadecimales y no números binarios o bytes (por supuesto, los números binarios subyacentes y los bytes cambiarán si se guarda el archivo)

¿Por qué editamos el uso binario hexadecimal?

Es más fácil ver o editar / modificar directamente archivos binarios mostrando los datos en forma hexadecimal y cambiando los valores hexadecimales.

  • Una forma conveniente de representar números binarios es usar hexadecimal.

  • Históricamente, las computadoras se programaban en lenguaje ensamblador, donde el código se escribía utilizando instrucciones del procesador y metadeclaraciones (conocidas como directivas, pseudoinstrucciones y pseudo-ops), comentarios y datos.

    • El código se traduce a binario utilizando un ensamblador. El código binario se puede cargar en un proceso y ejecutar.

    • Sin el código fuente, es más fácil modificar el programa directamente usando un editor que muestra el programa en hexadecimal en lugar de binario.

  • El código binario es más fácil de leer por los humanos cuando se convierte en hexadecimal.

    Por ejemplo, ¿qué par de números es más fácil de memorizar o leerle a otra persona?

    10110000 01100001
    

    O

    B0 61
    
  • Cada dígito hexadecimal representa cuatro dígitos binarios (bits). Un dígito hexadecimal representa un mordisco, que es la mitad de un octeto o byte (8 bits).

    Por ejemplo, los valores de bytes pueden variar de 0 a 255 (decimal), pero pueden representarse más convenientemente como dos dígitos hexadecimales en el rango de 00 a FF.

  • El hexadecimal también se usa comúnmente para representar las direcciones de memoria de la computadora.

DavidPostill
fuente
3
También tenga en cuenta que, aunque la Base 64 puede parecer aún más fácil de memorizar, nos atenemos a Hex porque tiene la buena propiedad de mapear 2 caracteres ⇒ 1 byte.
PythonNut
9

De acuerdo con varias convenciones de lenguaje de programación y sistema operativo, hay dos tipos de archivos:

  • archivos de texto que están formados por un conjunto de líneas de texto, cada línea compuesta de un conjunto de caracteres imprimibles (incluidos algunos caracteres de control) y terminados al final de las líneas
  • archivos binarios que contienen un conjunto arbitrario de bytes, incluido el byte nulo que está prohibido en un archivo de texto.

Los editores de texto pueden abrir archivos de texto, mientras que los editores binarios no tienen restricciones sobre el tipo de archivos que procesan.

El hecho de que los editores binarios a menudo representan y permiten ingresar datos en hexadecimal es solo una conveniencia (a menudo muestran y permiten reemplazar caracteres ascii también), solo mostrar datos en binario puro haría que los datos fueran menos legibles.

Un editor binario popular se llama HexEdit .

ingrese la descripción de la imagen aquí

Con razón se considera un editor binario y un editor hexadecimal:

ingrese la descripción de la imagen aquí

Incluso hay una opción para no mostrar los datos en hexadecimal, sino solo el texto

ingrese la descripción de la imagen aquí

jlliagre
fuente
5

Los archivos en la gran mayoría, si es que todos, de las computadoras de hoy son bytes de 8 bits . Por lo general, esa es la abstracción con la que se trabaja al editar directamente un archivo.

Por supuesto, existe la posibilidad de editar bits de datos individuales, pero no con frecuencia. De todos modos, las operaciones comunes a nivel de bit como establecer el bit 7 son fáciles de hacer con hexadecimal: 1000 0000 base2 = 80 base16 , por lo que si un valor hexadecimal está por debajo de 80 base2, el bit 7 es claro y agregar 8 base16 lo establecerá.

Otras razones por las cuales el hex está más fuertemente asociado a este tipo de actividad:

  • Los valores hexadecimales son más fáciles de reconocer al escanear visualmente valores conocidos. Por ejemplo, 20 base16 = 32, que es un espacio ASCII, pero el mismo valor 0010 0000 base2 no es tan fácil de reconocer como tal entre una avalancha de otros valores volcados.

  • Los sistemas antiguos en los que realmente necesitaba usar esto de manera regular pueden haber tenido un espacio de pantalla limitado (por ejemplo, 40 columnas). El monitor ROM Apple IIe es un gran ejemplo, puede volcar memoria en hexadecimal al video integrado de 40 columnas, y expandir los valores a binario en una pantalla de 80x24 te dejará sin espacio rápidamente. Para estos sistemas antiguos, también es más fácil escribir rutinas para convertir ASCII ingresado nuevamente a los valores correctos. Importante donde 4K de RAM se consideraba una gran cantidad de memoria y los sistemas pueden haber tenido solo tanta ROM.

  • La palabra "hexadecimal" suena mejor, es más corta y es más fácil de escribir.

LawrenceC
fuente
5

Cuando las personas usan hexadecimal, generalmente piensan en binario y usan el hexadecimal como una notación abreviada.

Dieciséis es un poder de 2. Ocho es también un poder de dos. Entonces 16 y 8 se han utilizado para la notación abreviada de binario. La conversión manual entre binario y una base de cierta potencia de dos es fácil. Simplemente agrupe los bits en el tamaño indicado por la base objetivo y luego use el dígito correspondiente.

Base 8, octal, era popular para muchas computadoras tempranas, razón por la cual Unix tiene un odcomando de volcado octal. Cada dígito octal representa 3 bits a la vez. Pero era inconveniente para las máquinas basadas en bytes de 8 bits.

Hexadecimal, hexadecimal para abreviar, base 16, representa 4 bits por dígito. Esta es una representación mucho más utilizada en estos días.

infijo
fuente
3

Esto se refiere a cómo las computadoras almacenan información.

En el nivel básico que usan las computadoras 0y 1para representar los datos, estos se llaman bits. Ocho bits agrupados juntos es un byte. Hexadecimal es base 16, lo que significa que tiene 16 caracteres ( 0-9, A-F). Para almacenar un carácter, se necesitan 8 bits o 1 byte.

Entonces un número hexadecimal 13( 19en decimal) es el mismo que 0001 0011en binario. Es más fácil leer hexadecimal que binario.

Burgi
fuente
2

Los editores binarios más antiguos que conozco también eran desensambladores. Es decir, la capacidad de edición fue un subproducto del desmontaje y parcheo de un archivo binario ejecutable.

Un buen ejemplo de dicha aplicación es Hiew.

El código ensamblado (instrucciones del ensamblador) a menudo se representa como cadenas hexadecimales. Creo que aquí es donde surge la confusión moderna. La gente simplemente no sabe a qué se enfrentan.

AnrDaemon
fuente
2

Cualquier archivo compilado y ejecutable (como somefile.exe, por ejemplo, en Windows) a veces se denomina "binario", ya que se ha compilado en un código de nivel de máquina que es correcto en el nivel binario para que el procesador lo ejecute directamente.

Entonces estás editando un binario. Simplemente se muestra en hexadecimal porque el hex es útil para los humanos.

Mike Gillis
fuente
Sí, pero muchos archivos de datos también son binarios. Ahorran espacio y traducción cuando la aplicación adecuada los lee. Además, incluso los archivos de texto a menudo se cifran o comprimen, convirtiéndolos en archivos binarios.
Joe
1

Voy a responder tus preguntas literalmente.

Primero, un poco de aclaración. Te refieres, por supuesto, a un editor hexadecimal. Hex significa 6 y decimal significa 10 , entonces hexadecimal significa 16 . Bi significa 2 . Como dijiste, estas son dos bases diferentes, base 16 y base 2, lo que significa que se necesitan 16 elementos de marcador de posición para definir un número hexadecimal y solo 2 elementos para definir un número binario.

Dijiste eso

If you actually search for "binary editor" on Google, you get hex editors.

Y ahora para tus preguntas,

Why is that? 

Esta es la parte literal. Google devuelve lo que la mayoría de las personas consideraba resultados satisfactorios de sus búsquedas. Sus algoritmos de aprendizaje automático asocian las cadenas "hexadecimal" y "hexadecimal" con "binario" dentro del contexto del "editor" de cadenas. Como la mayoría de los usuarios estaban satisfechos con el "editor" "hexadecimal" después de buscar el "editor" binario, eso es lo que obtenemos. No tiene sentido de otra manera.

What is the connection?

Literalmente, no hay ninguno, ya que Google no devuelve ningún significado. Google no conoce la diferencia entre binario y hexadecimal, solo puede tabular cómo las personas usan su motor de búsqueda.

Si estaba pidiendo la conexión real entre hexadecimal y binario, volviendo a mi aclaración anterior, un elemento hexadecimal codifica 16 posibilidades o 4 bits, pero un elemento binario codifica 2 posibilidades o 1 bit. Para codificar los 8 bits de información en un byte necesitamos 2 elementos hexadecimales u 8 elementos binarios. Entonces puede ver que los editores binarios o hexadecimales se pueden usar indistintamente ya que representan los mismos datos, solo en vistas diferentes.

r3mnant
fuente
1

Se llaman "binarios" porque le permiten cambiar bits individuales.

La IU generalmente funciona en hexadecimal por defecto porque es más conveniente, por ejemplo, ffffe0007d13e650 ocupa menos espacio en la pantalla que 1111111111111111111000000000000001111101000100111110011001010000. (Esa es una dirección real de un problema de depuración, no un ejemplo inventado). También es más fácil "ver" cosas como caracteres ascii o Unicode en el código hexadecimal.

Pero la mayoría de ellos cambiará a mostrarle bits binarios si realmente lo desea.

(¿Por qué manejamos en la vía de acceso pero estacionamos en la vía de acceso? Son solo palabras. El inglés a menudo es extraño).

Jamie Hanrahan
fuente