[C con Clase] Ayuda CadenaToHex??

Programante programante en gmail.com
Jue Mayo 3 00:16:25 CEST 2007


Carlos Rodriguez Reyes escribió:
> Hola miren, necesito ayuda instantanea sobre alguna funcion para 
> convertir una cadena (char) a Hexadecimal, para enviar un paquete de 
> este tipo:
> char Packet[3];
>    Packet[0] = 0x01;
>    Packet[1] = 0x40;
>    Packet[2] = 0x92;
>  
> SendPacket... etc etc
>  
> El caso es que voy a enviar un paquete que tiene una digamos 
> "cabecera" y luego un mensaje en ese formato, la verdad es que no 
> estoy seguro si es Hexadecimal o Bytes, porque no se en que se 
> diferencian. El caso es que necesito una ayuda instantanea :S
> Ej paquete: [ 10 00 96 05 0B 00 ] [ 00 0F 4F 5C ]
char Paquete[] = {0x10, 0x00,0x96,0x05, 0x0B,00}};
send(fd, Paquete, sizeof(Paquete), 0)

El formato hexadecimal no es más que una forma de representar los bytes 
de una forma legible.
Así pues en realidad no necesitas hacer ninguna transformación.
> Me lo acabo de inventar, es posible que haya hecho alguna tonteria :S 
> pero en fin, el caso es que el contenido en los primeros corchetes es 
> digamos la cabecera del paquete, y los segundos corchetes el mensaje, 
> osea necesito transformar un mensaje a ese formato y mas tarde unirlo 
> con la cabecera para poder enviar el paquete
>
Puedes enviar primero la cabecera y luego el mensaje (al enviar uno tras 
otro quedan "unidos") o bien enviarlos juntos.
char Paquete2[] = {0x00, 0x0F, 0x4f,0x5C };

char* Envio = new char[sizeof(Paquete)+sizeof(Paquete2)];
memcpy(Envio, Paquete, sizeof(Paquete)); //Cabecera
memcpy(Envio+sizeof(Paquete), Paquete2, sizeof(Paquete2)); //Mensaje
send(fd, Envio, sizeof(Paquete)+sizeof(Paquete2), 0); //Enviamos
delete[] Envio;

He estado trabajando con sizeof(), pero si los contenidos cambian debes 
llevar la cuenta de la longitud que tiene cada trozo en una variable.
> Gracias de ante mano
>  
> P.D.= Muchas gracias por tu ayuda Steven, me sirvio de mucho :)





Más información sobre la lista de distribución Cconclase