Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] casting de unsigned char a char

Estas en el tema de casting de unsigned char a char en el foro de C/C++ en Foros del Web. Hola, tengo un problema con C++, estoy usando la función: int rlSerial::readBlock(unsigned char * buf,int len,int timeout = -1) esta función guarda una cadena leída ...
  #1 (permalink)  
Antiguo 14/03/2015, 10:35
 
Fecha de Ingreso: julio-2013
Mensajes: 4
Antigüedad: 10 años, 9 meses
Puntos: 0
casting de unsigned char a char

Hola, tengo un problema con C++, estoy usando la función:


int rlSerial::readBlock(unsigned char * buf,int len,int timeout = -1)
esta función guarda una cadena leída del puerto serial y la almacena en buf (unsigned char), quiero mostrar el contenido de buf en una caja de texto pero la función que se encarga de establecer el texto de la caja recibe como parámetro una cadena de tipo char, mi pregunta es ¿cómo pasar la cadena original de unsigned char a char y viceversa?.
Muchas gracias por sus respuestas.
  #2 (permalink)  
Antiguo 14/03/2015, 12:37
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: casting de unsigned char a char

puedes hacer un cast asi:

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. void f(unsigned char * s){
  4.  
  5.     printf ("%s",s);
  6. }
  7.  
  8. int main (){
  9.  
  10.  
  11.     char s[100] = "lol";
  12.  
  13.     f( (unsigned char *) s );
  14.    
  15.  
  16.    
  17.     return 0;
  18. }
  #3 (permalink)  
Antiguo 14/03/2015, 19:15
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: casting de unsigned char a char

Si estás en C++, aparte de la solución propuesta por vangodp, puedes (y en mi opinión deberías) usar los cast de C++. El motivo es que estos cast son más seguros que los viejos cast de C y, además, son más sencillos de localizar en el código.

Aprovechando el código de vangodp, yo dejaría el cast así:

Código C++:
Ver original
  1. f( reinterpret_cast< unsigned char * >( s ) );

reinterpret_cast es un cast de C++ que viene a decir: "se que el tipo de origen y destino se parecen como un huevo a una castaña, pero se lo que hago así que compilador, por favor, confía en mí y no muestres error en esta línea".

No lo he probado, pero imagino que también funciona "static_cast", ya que estos dos tipos creo que son compatibles entre sí.
  #4 (permalink)  
Antiguo 14/03/2015, 20:15
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: casting de unsigned char a char

si.. Muy util! Estuve investigando un poco y encontré 2 temas muy interesantes.
http://stackoverflow.com/questions/3...t-cast-be-used
http://c.conclase.net/curso/?cap=042

voy a seguir investigando un poco =)
suerte!
  #5 (permalink)  
Antiguo 17/03/2015, 19:53
 
Fecha de Ingreso: julio-2013
Mensajes: 4
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: casting de unsigned char a char

Gracias por su ayuda vangodp y eferion, use la solución reinterpret_cast que me recomendarón, saludos.

Etiquetas: c++, cast, char
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:22.