Hola buenas.
Estoy buscando un programa, para ubuntu a ser posible, que sea capaz de aceptar una cadena larga de representación hexadecimal y la transforme en su representación binaria, y viceversa.
He encontrado el Khexedit, pero solo admite 32 bits.
82E0AEEE08380000 1000001011100000101011101110111000001000001110000000000000000000
Agradezco ayuda.
Si quieres buenas respuestas haz buenas preguntas
73 de Angel, EA2ET.
EA2ET escribió:Hola buenas.Estoy buscando un programa, para ubuntu a ser posible, que sea capaz de aceptar una cadena larga de representación hexadecimal y la transforme en su representación binaria, y viceversa.
He encontrado el Khexedit, pero solo admite 32 bits.
82E0AEEE08380000 1000001011100000101011101110111000001000001110000000000000000000
Agradezco ayuda.
Bueno, 82E0AEEE08380000 son 64 bits
No se si te servirá, pero prueba con este par de scripts de bash. Crea los ficheros de texto con el siguiente contenido:
hex2bin:
Escribió:#/bin/bash# Comprueba argumentos
if [ $# -ne 1 ]
then
echo "Uso: hex2bin hexstring"
exit 1
fidigits=${#1}
string=${1^^}#Conversion
for (( i=0; i <= digits-1; i++ ))
do
hd=${string:i:1}
case $hd in
0) echo -n 0000
;;
1) echo -n 0001
;;
2) echo -n 0010
;;
3) echo -n 0011
;;
4) echo -n 0100
;;
5) echo -n 0101
;;
6) echo -n 0110
;;
7) echo -n 0111
;;
echo -n 1000
;;
9) echo -n 1001
;;
A) echo -n 1010
;;
echo -n 1011
;;
C) echo -n 1100
;;
D) echo -n 1101
;;
E) echo -n 1110
;;
F) echo -n 1111
;;
*) echo -n ????
;;
esac
done
echo
Bueno, como ya habrás deducido, es B y ) juntos.
bin2hex:
Escribió:#/bin/bash# Comprueba argumentos
if [ $# -ne 1 ]
then
echo "Uso: bin2hex binstring"
exit 1
fi# Longitud string multiplo de 4, relleno con ceros a la izquierda
string=$1while [ $(( ${#string} % 4)) != 0 ]
do
string=0$string
done#Conversion
digits=${#string}
for (( i=0; i <= digits-1; i=i+4 ))
do
nibble=${string:i:4}
case $nibble in
0000) echo -n 0
;;
0001) echo -n 1
;;
0010) echo -n 2
;;
0011) echo -n 3
;;
0100) echo -n 4
;;
0101) echo -n 5
;;
0110) echo -n 6
;;
0111) echo -n 7
;;
1000) echo -n 8
;;
1001) echo -n 9
;;
1010) echo -n A
;;
1011) echo -n B
;;
1100) echo -n C
;;
1101) echo -n D
;;
1110) echo -n E
;;
1111) echo -n F
;;
*) echo -n ?
;;
esac
done
echo
Dales permisos de ejecución:
Escribió:chmod 755 bin2hex hex2bin
Déjalos en el directorio actual o ponlos en algún lugar del path. Si los usas en el directorio actual no olvides de anteponer el ./ antes de ejecutarlos. Cuando los tengas listos, pruébalos:
Escribió:eoz@AspireOne ~ $ hex2bin FA65C89BCD3A1DF82E0AEDADEEE0838406023001
1111101001100101110010001001101111001101001110100001110111111000001011100000101011101101101011011110111011100000100000111000010000000110000000100011000000000001eoz@AspireOne ~ $ bin2hex 00101010110101001111101010101000101010110101111101010100000101111101010100011110101010101010111010010100100000111000001010101101001011101010001111110101010110100010101011110101010100001010101111101010101011111101010101010
055A9F55156BEA82FAA3D555D2907055A5D47EAB455EAA157D55FAAAeoz@AspireOne ~/ $
Creo que funcionan bien... espero que te sirvan para algo.
73!
:unsure:
EA2HA Humberto
Humberto, gracias por el intento y por el cumplido, ya veo la respuesta de Miguel Angel, pero para seguirle a este hay que coger carrerilla.
Miguel Angel, se me olvido decir que para Ubuntu gráfico. :laugh: :laugh:
82E0AEEE08380000 1000001011100000101011101110111000001000001110000000000000000000 no tiene relación con Khexedit, es solo un ejemplo de lo que quería, en este caso lo he representado al revés, ya que en realidad es una conversión a mano del binario a hexadecimal, y seguro que ya has deducido el objeto original que produce ese binario.
Tengo muchas dudas de como generar y ejecutar los programas que me has puesto (justo sé abrir la consola), pero en cuanto tenga un rato lo pruebo (ahora estoy muy liado leyendo el foro). :laugh:
Gracias por la aportación, creo que eso me servirá.
Si quieres buenas respuestas haz buenas preguntas
73 de Angel, EA2ET.
Hola Angel,
Habria un comando mas simple que te podria ayudar, eso si, en una consola y usando el pequeño programa "bc".
Abrimos una consola de linux y tecleamos lo siguiente
echo "obase=16;ibase=2; 1000001011100000101011101110111000001000001110000000000000000000" | bc
Le damos al enter, y esto devuelve:
82E0AEEE08380000
Esto viene a decir que le indicamos al programa "bc" que la entrada de datos va ser hexadecimal (obase= 16"), que la salida la queremos en binario (ibase2), luego el chorizo de unos y ceros que quieres convertir.
le damos al enter y ya tenemos el resultado. Cambiando la base de tipos de datos, podemos invertir la conversión.
Saludos !!
Ricard
Ricard, muchas EE8BA2E3AE8A2E2A.
Si quieres buenas respuestas haz buenas preguntas
73 de Angel, EA2ET.
EA2ET escribió:Miguel Angel, se me olvido decir que para Ubuntu gráfico. :laugh: :laugh:
Linux sin consola es como un equipo de radio sin antena...
Prueba a bajar y ejecutar esto:
Posiblemente deberás darle permisos de ejecución. Supongo que te servirá.
73!
Hola Angel,
Para el sistema grafico, podria hacerlo funcionar bajo gambas. Si te sirve, un dia de estos me pongo a ver que tal sale. Tambien puedes hacer esto:
Copia esto a un archivo de texto, le das el nombre que quieras, permisos de ejecución y correlo en un terminal o bien haciendo doble click en el archivo.
#!/bin/bash
echo 'CONVERSOR BINARIO A HEXADECIMAL'
echo 'Introducir el valor binario:'
read binario
echo "obase=16;ibase=2;$binario" | bc
echo 'FIN'
read
Saludos !
Me estoy volviendo majara para ejecutar archivos de script (ya me habéis picado).
Si inicio el fichero con #!/bin/bash me da error
bash: ./b2h_EOZ1: /bin/bash^M: intérprete erróneo: No existe el archivo o el directorio
Si inicio con #/bin/bash (sin !) me da algún otro error aunque empieza a correr el fichero, ejecuta los echos, e incluso el read aunque da error.
Me he asegurado de que el fichero tiene permisos de ejecución y que está en el directorio donde se ejecuta la consola.
Si quieres buenas respuestas haz buenas preguntas
73 de Angel, EA2ET.
Hola Angel,
Es extraño, ya que a mi me ha funcionado correctamente el script.
De todas maneras, repasa de nuevo el script que no te hayas dejado algo en el camino,como algún punto y coma entre los parámetros o las dobles comillas.....
A veces uno se despista. :unsure:
Por cierto, que versión de Ubuntu tienes y bajo que hardware corre ?
Otra cosa.....,como ejecutas el script?, abres primero una consola y lanzas el comando ./b2h_EOZ1 ? Lo lanzas haciendo doble click en el archivo ?
Si lo haces de la primera manera, asegurate de que estas dentro de la carpeta donde está el script, ya que la consola arranca por defecto en la /home/tu_usuario/ y esto puede provocar el error.
Si no estas dentro de la carpeta, por ejemplo que hayas creado el script en el escritorio, deberas entrar en el primero ( CD Escritorio ) y despues lanzar el script ./b2h_EOZ1
De momento no se me ocurre nada mas,
Saludos
Ricard
Encontrado el problema, algo que mete el editor de texto, ahora funciona perfectamente.
Miguel Angel, tu programa también funciona perfecto.
Ubuntu 11.10
Pentium 4 3.00GHz x2
1.5 GiB RAM
Si quieres buenas respuestas haz buenas preguntas
73 de Angel, EA2ET.
EA2ET escribió:bash: ./b2h_EOZ1: /bin/bash^M: intérprete erróneo: No existe el archivo o el directorio
Has pasado/creado los scripts por/en un Windows y ha cambiado los retornos de carro por retornos de carro y avance de línea (el ^M) y los ha "corrompido".
Bájalos de este mensaje directamente desde Linux y no deberías tener problemas.
Añado: Pues si ya te funciona, pues eso
Hola Angel, me alegro de que hayas encontrado el problema y que funcione.
De todas maneras ya se nota los que somos aprendices de los maestros ( Esto va por Miguel Angel ), yo he usado una pequeño programa para realizar la conversión y el lo ha hecho todo con el lenguaje de la shell.
Me alegro si te he podido ayudar en algo.
Un saludo muy cordial para los dos!
EA3DWU
Ricard
Sí que me habéis ayudado, sobre todo a entender un poco más de Linux.
Por cierto, no habéis hecho ningún comentario sobre lo que representan los binarios que he puesto, no sé si lo habréis pillado.
82E0AEEE08380000 1000001011100000101011101110111000001000001110000000000000000000
. / ._ / .._ _ _ / . / _
Ricard, muchas EE8BA2E3AE8A2E2A 1110111010001011101000101110001110101110100010100010111000101010
_ _. / ._. / ._ / _._. / .. / ._ / ...
Es para jugar con la Eprom de un repetidor IC-RP1510
73
Si quieres buenas respuestas haz buenas preguntas
73 de Angel, EA2ET.
QDURE - https://qsl.ure.es
Imprime y confirma tus QSL en tan solo tres click.
Nunca fue tan fácil y cómodo
el confirmar tus contactos.
TIENDA ONLINE URE
Publicaciones, mapas, polos, camisetas, gorras, tazas, forros polares y mucho más...
WEBCLUSTER EA4URE
Conoce el nuevo WebCluster de URE, ahora con nuevos filtros e información y compatible con GDURE