Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: 0x3c en 3 Enero 2013, 13:30 pm



Título: como llevo texto a codigo hexadecimal?
Publicado por: 0x3c en 3 Enero 2013, 13:30 pm
buenas, yo por aqui de nuevo poblando el foro con mis dudas y preguntas :P..como ya dije en otro post estoy siguien un libro y en uno de sus capitulos esta este codigo:

Código:
#include <stdio.h>

int main()
{
  char key;
 
  printf("Press any key on your keyboard:");
  key=getchar();
  printf("You pressed the %c key\n",key);
  printf("Its ASCII value is %d.\n");
  return(0);
}

mi duda es, ya que la ultima printf() muestra el valor hexadecimal del caracter que presiono en el teclado puedo hacer lo mismo con una cantidad mayor de texto pero como? solo debo modificar el tipo de variable? o requiere algun tipo de modificacion mas amplia?



saludos


Título: Re: como llevo texto a codigo hexadecimal?
Publicado por: 0xDani en 3 Enero 2013, 15:42 pm
Si quieres sacar una cadena en hexadecimal (por cierto el especificador de formato hexadecimal es %x, no %d) solo tienes que sacar cada miembro de la cadena en hexadecimal.

Código
  1. int printhexa(const char *s)
  2. {
  3. int ret=0;
  4. while(*s)
  5. {
  6.   ret += printf("%x", *s);
  7.   s++;
  8. }
  9. return ret;
  10. }
  11.  


Título: Re: como llevo texto a codigo hexadecimal?
Publicado por: rir3760 en 3 Enero 2013, 16:25 pm
buenas, yo por aqui de nuevo poblando el foro con mis dudas y preguntas :P..como ya dije en otro post estoy siguien un libro y en uno de sus capitulos ...
Revisa con cuidado el libro para asegurarte del tipo de la variable "key", este debe ser de tipo "int" ya que ese es el valor de retorno de la función getchar.

Un saludo


Título: Re: como llevo texto a codigo hexadecimal?
Publicado por: 0x3c en 4 Enero 2013, 15:45 pm
0xDani:

Código:
    int printhexa(const char *s)
    {
    int ret=0;
    while(*s)
    {
      ret += printf("%x", *s);
      s++;
    }
    return ret;
    }


gracias por la ayuda, pero me puedes explicar un poco tu codigo? solo puedo entender algunas lineas...


rir37
si eso es lo que dice el libro..que como las computadoras no distinguen entre A y a que ellas solo ven binario..


saludos


Título: Re: como llevo texto a codigo hexadecimal?
Publicado por: 0xDani en 4 Enero 2013, 16:14 pm
Código
  1.  
  2. int printhexa(const char *s)
  3. {
  4.  int ret=0;
  5.  while(*s)
  6.  {
  7.     ret += printf("%x", *s);
  8.     s++;
  9.  }
  10.  return ret;
  11. }
  12.  

Bien, esta funcion recibe un puntero a la primera direccion de memoria de la cadena a imprimir, y retorna el numero de bytes escritos. Como las cadenas en C estan delimitadas con un caracter nulo ('\0' o simplemente 0) lo que hace es imprimir el primer caracter de la cadena si no es un nulo, despues pasar al siguiente caracter, incrementando el puntero (s++;), con esto hace que apunte al siguiente caracter, y vuelve a iterar.

Entretanto la variable ret va acumulando el numero de bytes escritos, que es lo que retorna printf().

Saludos.