como llevo texto a codigo hexadecimal?

Iniciado por 0x3c, 3 Enero 2013, 13:30 PM

0 Miembros y 1 Visitante están viendo este tema.

0x3c

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:


#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
Si Vis Pacem, Para Bellum.

Another Legend Has Fallen

0xDani

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.


int printhexa(const char *s)
{
int ret=0;
while(*s)
{
   ret += printf("%x", *s);
   s++;
}
return ret;
}
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

rir3760

Cita de: n3t_3rr0r en  3 Enero 2013, 13:30 PMbuenas, 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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

0x3c

0xDani:


    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
Si Vis Pacem, Para Bellum.

Another Legend Has Fallen

0xDani

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


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.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM