[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