[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