[C con Clase] Pasar datos de un buffer int a uno del tipo char
Steven Richard Davidson
stevenrichard.davidson en gmail.com
Vie Sep 14 18:12:17 CEST 2007
Hola Isabel,
On 9/14/07, Isabel Rios Escobar <isabelrios en gmail.com> wrote:
> Hola, a ver si alguien pudiera ayudarme con este problemilla:
>
> Tengo un array en el que he de guardar unos datos que leo del puerto serie
> de tipo int.
> Para seguir con mi programa he de utilizar esos datos pero antes he de
> guardarlos en un buffer que está apuntado por un puntero tipo char, por lo
> que me he creado un buffer de este tipo, pero no consigo que los datos se
> guarden y posteriormente impriman correctamente.
>
Supongo que tienes dos funciones parecidas a las siguientes:
unsigned long leer( char *pBuffer, unsigned long nCantidad );
unsigned long escribir( char *pBuffer, unsigned long nCantidad );
Pero en lugar de enviar caracteres, quieres enviar enteros. La razón
de pedir caracteres no es que se requiera caracteres, sino más bien
bytes. Como 'char' siempre ocupa 1 byte, es un tipo de dato que se
suele usar en estos casos.
La solución es simplemente hacer un cásting del puntero de enteros a
un puntero de 'char'. Por ejemplo,
int lista[10];
...
leer( (char *) lista, 10*sizeof(int) );
escribir( (char *) lista, 10*sizeof(int) );
En C++, recomiendo usar el operador 'reinterpret_cast<>'. Esto sería,
leer( reinterpret_cast< char * >( lista ), 10*sizeof(int) );
escribir( reinterpret_cast< char * >( lista ), 10*sizeof(int) );
Espero que esto te ayude. Si no, entonces sugiero enviarnos la parte
del código fuente que interesa.
Steven
Más información sobre la lista de distribución Cconclase