• Domingo 22 de Diciembre de 2024, 17:18

Autor Tema:  Cadena de caracteres hexadecimal  (Leído 2607 veces)

zairillo

  • Nuevo Miembro
  • *
  • Mensajes: 23
    • Ver Perfil
Cadena de caracteres hexadecimal
« en: Viernes 20 de Marzo de 2009, 11:57 »
0
Hola a todos!

Ando liado con un proyecto en el cual tengo que trabajar con cadenas de caracteres en las cuales hay caracteres en hexadecimal. Mi problema es que para comprobar que funciona, declaro una variable a la que le doy un valor en hexadecimal, 0x10 por ejemplo, y seguidamente la saco por pantalla, pero al sacarla por pantalla lo que me sale es un símbolo raro, ¿qué tengo que hacer?

Un saludo!

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Cadena de caracteres hexadecimal
« Respuesta #1 en: Viernes 20 de Marzo de 2009, 12:02 »
0
Podrías ser más específico y poner algo de código... En fin:

Código: C
  1. int tu_variable1 = 16;
  2. int tu_variable2 = 020;
  3. int tu_variable3 = 0x10;
  4. printf("%x %x %xn",tu_variable1,tu_variable2,tu_variable3);
  5.  

Salud

zairillo

  • Nuevo Miembro
  • *
  • Mensajes: 23
    • Ver Perfil
Re: Cadena de caracteres hexadecimal
« Respuesta #2 en: Viernes 20 de Marzo de 2009, 12:54 »
0
Muchas gracias!

Siento no haber sido más específico, solo era por no liarlo más, pero lo explico ahora.
Mi proyecto se basa en la transferencia de instrucciones, por medio de c++, entre el pc y un GPS. Este, está conectado al pc por medio del puerto serie. Para la transferencia de instrucciones, tengo que usar el protocolo TSIP, cuyo formato de instrucciones es el siguiente:
<DLE><id><data string bytes><DLE><ETX>, donde DLE=0x10, ETX=0x03.
Además, para la comunicación uso las API de windows.
Mi problema es que no sé cómo utilizar las cadenas de caracteres en hexadecimal, cómo las tengo que declarar.
Por ejemplo, para pedir el nivel de las señales, se usa la instrucción 0x27 según el protocolo, y no se necesita enviar más datos. Voy a poner la forma en la que yo lo haría:

char cadena[4];
cadena[0]=0x10;
cadena[1]=0x27;
cadena[2]=0x10;
cadena[3]=0x03;

A partir de aquí usaría la función WriteFile para enviar la cadena, y para recibir lo que el GPS me devuelva usaría la función ReadFile.

Espero que me haya explicado mejor.

Un saludo.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Cadena de caracteres hexadecimal
« Respuesta #3 en: Viernes 20 de Marzo de 2009, 13:24 »
0
Cita de: "zairillo"
Mi problema es que no sé cómo utilizar las cadenas de caracteres en hexadecimal, cómo las tengo que declarar.
Como lo has hecho está perfecto.

Siempre ten en cuenta que si es hexadecimal, decimal, octal, binario o un carácter realmente no influye en la manera en que lo representa internamente el ordenador, que siempre es en binario. La representación es para nosotros pobres humanos  ^_^

zairillo

  • Nuevo Miembro
  • *
  • Mensajes: 23
    • Ver Perfil
Re: Cadena de caracteres hexadecimal
« Respuesta #4 en: Viernes 20 de Marzo de 2009, 13:30 »
0
Ok, muchas gracias.

Entonces mi problema será con el GPS...jejeje...¿Hay alguien que haya trabajado con el protocolo TSIP?

saludos!

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Cadena de caracteres hexadecimal
« Respuesta #5 en: Viernes 20 de Marzo de 2009, 13:53 »
0
Cita de: "zairillo"
¿Hay alguien que haya trabajado con el protocolo TSIP?
Yo no lo he usado, pero en el ejemplo que pones hay un error, puesto que según tu definición del formato del paquete:

Cita de: "zairillo"
<DLE><id><data string bytes><DLE><ETX>, donde DLE=0x10, ETX=0x03.
y tu array:

Código: C
  1. char cadena[4];
  2. cadena[0]=0x10;
  3. cadena[1]=0x27;
  4. cadena[2]=0x10;
  5. cadena[3]=0x03;
  6.  
Te falta o el <id> o los <data>.

Espero que sea esto.

Salud

zairillo

  • Nuevo Miembro
  • *
  • Mensajes: 23
    • Ver Perfil
Re: Cadena de caracteres hexadecimal
« Respuesta #6 en: Viernes 20 de Marzo de 2009, 14:03 »
0
Ya, falta los "data string", pero es que en esa instrucción especialmente, no se requiere el enviar más datos, así que con lo demás estaría bien.

Gracias por la ayuda de todas formas.

Saludos.