convertir unsigned char a char

Iniciado por SARGE553413, 10 Julio 2014, 12:43 PM

0 Miembros y 1 Visitante están viendo este tema.

SARGE553413

Hola a todos.

Tengo una funcion en C que me devuelve un unsigned char *. Tengo que escribir esta cadena en un fichero binario, para lo cual uso cout.write().
Pero ese método solo admite char *, así que hago la conversión.
Mi pregunta es si debido a esta conversión habrá algunos bytes que cambien.

Gracias, saludos.

eferion

Cuando tu haces una conversión explícita, lo único que sucede es que le estás diciendo al compilador que sabes que el dato se va a tratar de forma diferente... por lo que evitas la aparición de warnings. Sin embargo la información almacenada en memoria es exactamente la misma.

SARGE553413

#2
Cita de: eferion en 10 Julio 2014, 12:46 PM
Cuando tu haces una conversión explícita, lo único que sucede es que le estás diciendo al compilador que sabes que el dato se va a tratar de forma diferente... por lo que evitas la aparición de warnings. Sin embargo la información almacenada en memoria es exactamente la misma.

Gracias por la respuesta.

Pero quiero decir, si unsigned char var de 0 a 255 y char de -128 a 127, podrán cambiar algunos bytes no?
Es decir, si tengo un insigned char c=255 y lo casteo a char, entonces ya no será el byte que era, porque char no llega hasta 255, ¿me equivoco?

EDITO: Lo acabo de comprobar con 255, 120, 122, 130 y no cambia, no lo entiendo.

eferion

Ambos tipos usan 8 bits... unsigned char usa los 8 bits para representar el número... char usa el primer bit para representar el signo y los otros 7 para represetnar el número... pero una codificación binaria cualquiera es válida para ambos tipos.

El código binario es el mismo, lo único que cambia es la forma en la que se interpreta esa información.

SARGE553413