• Domingo 15 de Diciembre de 2024, 18:11

Autor Tema:  Cast De Byte A Char  (Leído 1634 veces)

Escalona

  • Miembro activo
  • **
  • Mensajes: 63
    • Ver Perfil
Cast De Byte A Char
« en: Martes 19 de Diciembre de 2006, 14:23 »
0
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

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Cast De Byte A Char
« Respuesta #1 en: Martes 19 de Diciembre de 2006, 18:59 »
0
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.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Cast De Byte A Char
« Respuesta #2 en: Martes 19 de Diciembre de 2006, 22:55 »
0
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).
La imaginación es el límite.
Hardware & Software | Mexchip

Escalona

  • Miembro activo
  • **
  • Mensajes: 63
    • Ver Perfil
Re: Cast De Byte A Char
« Respuesta #3 en: Miércoles 20 de Diciembre de 2006, 10:37 »
0

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.