Autor
|
Tema: ayuda paso de byte* a char* (Leído 8,355 veces)
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
Dudo que la basura contenga los bytes de la MAC, puesto que "WinSock 2.0" no creo que tenga mucho que ver en ello.
printf() lee hasta un un byte nulo.bMacAddr no tiene byte nulo, así que sigue leyendo en memoria hasta un byte nulo.
|
|
|
En línea
|
|
|
|
Kaxperday
Desconectado
Mensajes: 702
The man in the Middle
|
Pero imprimir ints por pantalla no me hará conseguir la cadena char*.
|
|
|
En línea
|
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
En ese caso, utiliza sprintf().
|
|
|
En línea
|
|
|
|
Kaxperday
Desconectado
Mensajes: 702
The man in the Middle
|
Imposible: BYTE *bMacAddr = (BYTE*)&MacAddr; for (int i = 0; i < (int)PhyAddrLen; i++) printf("%x", bMacAddr[i]); //*(mac) = (char*)bMacAddr; //printf("\n%s\n", (int)*(mac)); //const int n = sprintf(NULL, 0, "%lu", MacAddr); char buf[30]; sprintf(buf, "\n%s", MacAddr); printf("\n%s\n", buf);
Ya lo probé antes y tampoco funciona, no hay manera he buscado ningún código funciona, al final lo acabaré pasando a u_char* y que lo **. Edito: Produce error en el sprintf, "stack around the variable buff was corrupted". Saludos.
|
|
« Última modificación: 27 Junio 2015, 02:38 am por Kaxperday »
|
En línea
|
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
MacAddr no. Tendrás que interpretar como enteros cada uno de los bytes de MacAddr.
|
|
|
En línea
|
|
|
|
Kaxperday
Desconectado
Mensajes: 702
The man in the Middle
|
BYTE *bMacAddr = (BYTE*)&MacAddr; //for (int i = 0; i < (int)PhyAddrLen; i++) // printf("%x", bMacAddr[i]); //*(mac) = (char*)bMacAddr; //printf("\n%s\n", (int)*(mac)); char buf[30]; char ok[40]=""; for (int i = 0; i < (int)PhyAddrLen; i++) printf("%c", (char)(int)bMacAddr[i]); printf("\n"); for (int i = 0; i < (int)PhyAddrLen; i++) { sprintf(buf, "%c", (int)bMacAddr[i]); printf("%c", buf); strcat(ok, buf); } //sprintf(buf, "%s", MacAddr); printf("\n%s\n", ok);
No hay manera. 3 intentos 3 veces muestra basura. Edito: Acabo de probar con _itoa y tampoco funciona, no hay manera. Saludos.
|
|
« Última modificación: 27 Junio 2015, 02:52 am por Kaxperday »
|
En línea
|
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
printf("%c", (char)(int)bMacAddr[i]); para qué ese (char)? Estás haciendo 2 conversiones, una de ellas no sirve de nada. Prueba con printf("%i", (int)bMacAddr [i ]);
|
|
|
En línea
|
|
|
|
Kaxperday
Desconectado
Mensajes: 702
The man in the Middle
|
Nada: BYTE *bMacAddr = (BYTE*)&MacAddr; for (int i = 0; i < (int)PhyAddrLen; i++) { printf("%i", (int)bMacAddr[i]); }
Salida: Lejos de la cadena, mostrando enteros no obtendré un char*. Y para meterlo en sprintf.. for (int i = 0; i < (int)PhyAddrLen; i++) { printf("%i", (int)bMacAddr[i]); sprintf(buf, "%c", (int)bMacAddr[i]); printf("%c", buf[0]); }
Probaré otros métodos. Gracias de todas formas.
|
|
« Última modificación: 27 Junio 2015, 03:05 am por Kaxperday »
|
En línea
|
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
Esos son 6 números sin espacios. ¿No es la MAC que buscas? 60:71:175:41:52:29 Claramente, en decimal.
|
|
« Última modificación: 27 Junio 2015, 03:05 am por ivancea96 »
|
En línea
|
|
|
|
Kaxperday
Desconectado
Mensajes: 702
The man in the Middle
|
Con espacios: La Mac empezaba por 3C. Así hemos pasado los 6 bloques hexadecimales de la Mac a enteros. Si ahora lo que buscabas era pasarlos a chars no creo que funcione. Esto sí muestra la Mac, pero no obtengo la cadena, no se como llegar a ella: BYTE *bMacAddr = (BYTE*)&MacAddr; for (int i = 0; i < (int)PhyAddrLen; i++) printf("%x", bMacAddr[i]); Saludos.
|
|
« Última modificación: 27 Junio 2015, 03:13 am por Kaxperday »
|
En línea
|
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Sources Code] RotBits [Byte TO Byte ]
Programación Visual Basic
|
x64core
|
8
|
5,705
|
22 Octubre 2011, 00:46 am
por BlackZeroX
|
|
|
Ayuda en C. Unir char a char[] SOLUCIONADO
Programación C/C++
|
NeoB
|
5
|
5,665
|
10 Abril 2012, 23:07 pm
por NeoB
|
|
|
Variable Char a BYTE
« 1 2 »
Programación C/C++
|
bwsr
|
12
|
6,789
|
23 Febrero 2013, 20:04 pm
por bwsr
|
|
|
Filestream . Byte a Byte
.NET (C#, VB.NET, ASP)
|
blaron
|
3
|
3,280
|
5 Abril 2014, 02:01 am
por Eleкtro
|
|
|
Error en este código: no se puede convertir de 'byte[]' a 'char[]'
.NET (C#, VB.NET, ASP)
|
Meta
|
5
|
6,022
|
29 Diciembre 2023, 18:20 pm
por Meta
|
|