SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: Escalona en Martes 19 de Diciembre de 2006, 14:23

Título: Cast De Byte A Char
Publicado por: Escalona en Martes 19 de Diciembre de 2006, 14:23
Buenas me gustaría pasar el contenido de una variable BYTE a un char, mi programa me devuelve una direccion MAC que almacena en una variable BYTE[6], y yo lo que quiero es interpretar la MAC, pasando la variable a char, ¿se os ocurre alguna manera de hacer cast entre estos dos tipos de variables?

He hecho pruebas:

Código: Text
  1.  
  2.     for(i=0;i<=5;i++){
  3.        texto[i]=(char)bytes[i];
  4.     }
  5.  
  6.  

Asi me mete en la variable texto el contenido de bytes, pero cuando lo pinto en pantalla, me pinta el equivalente de los valores de bytes en ascii, de manera que si en bytes tenia 26.55.23.65.13.0 , me pinta algo totalmente diferente a eso, algo como []7[]A (los corchetes no).

A mi me interesaria directamente imprimir los valores 26.55.23.65.13, que no los interprete.
No se si me explico bien , bueno espero alguna respuesta de vuestra parte. Saludos
Título: Re: Cast De Byte A Char
Publicado por: JuanK en Martes 19 de Diciembre de 2006, 18:59
haste una funcion que se llame bytes a texto o algo asi,


luego

partes el array de bytes en cada una de sus partes, luego para cada una de sus partes usa la funcion itoa para obtener su equivalente en cadena


finalmente concatenas las cadenas con strcat y asi ya obtienes la cadena que necesitabas.
Título: Re: Cast De Byte A Char
Publicado por: Geo en Martes 19 de Diciembre de 2006, 22:55
Primero, un array de char tiene un caracter en cada uno de sus elementos, por lo tanto, no puedes pasar, por ejemplo, el número 26 de una posición de array de bytes a otra en el array de char, puesto que si la vas a convertir en texto deberías utilizar dos posiciones, una para el 2 y otra para el 6.

Si sólo te interesa mostrar la dirección, puedes hacer simplemente:
Código: Text
  1.  
  2. for ( i = 0; i < 5; i++ ) {
  3.   printf( "%d", mac[ i ] );
  4.   if ( i < 5 ) printf( "." );
  5. }
  6.  
  7.  

Si quieres pasar todo a una cadena de texto, usa sprintf:
Código: Text
  1.  
  2. sprintf( cadena, "%d.%d.%d.%d.%d.%d",
  3.     mac[ 0 ], mac[ 1 ], mac[ 2 ],
  4.     mac[ 3 ], mac[ 4 ], mac[ 5 ] );
  5.  
  6.   printf( "Cadena: %s\n", cadena );
  7.  
  8.  

Suerte,
JJ (Geo).
Título: Re: Cast De Byte A Char
Publicado por: Escalona en Miércoles 20 de Diciembre de 2006, 10:37

Solucionado


Gracias por las respuestas, ya consegui hacer lo que queria de la siguiente forma:

Código: Text
  1.  
  2.   for (x=0;x<=5;x++){
  3.     num=(int)variableBytes[x];
  4.     n1=(num/100);
  5.     c[0]=n1+48;
  6.     num=num-(n1*100);
  7.          
  8.     n2=(num/10);
  9.     c[1]=n2+48;
  10.     num=num-(n2*10);
  11.  
  12.     c[2]=num+48;
  13.     c[3]='\0';
  14.  
  15.     if (x==0){
  16.      strcpy(variableCHAR,c);
  17.     }else{
  18.      strcat(variableCHAR,c);
  19.     }
  20.   }
  21.  
  22.