Programación General > C/C++
Convertir Cadena de caracteres en un float
zairillo:
He hecho el casting que me dices usando la función "atof", y el resultado es el que comento, sale 0.000000.
Como lo que me interesan son 4 posiciones del Buffer, extraigo esas 4 posiciones que me interesan en otro buffer, para que solamente esté eso, y ese segundo buffer lo mando a la función atof. Es decir, tengo:
unsigned char cad[500];
unsigned char nuevo[4];
double a;
en las posiciones 0,1,2,3, guardo los 4 posiciones de cad que me interesan y hago:
a=atof((const char*)nuevo);
printf("%frn",a);
y lo que sale es 0.00000.
también he probado a declarar nuevo de 5 posiciones, y poner en nuevo[5]='' y también poner nuevo[5]=0 y sigue saliendo lo mismo. ¿Algo mal? ¿Alguna idea más?
Siento las molestias, muchas gracias!
Eternal Idol:
No entendes, lo que tenes: NO ES UNA CADENA, atof transforma UNA CADENA a float. ESO QUE TENES NO ES UNA CADENA.
Si realmente es un float esto tendria que ser correcto:
--- Código: Text ---unsigned char cad[4];cad[0]=23;cad[1]=45;cad[2]=128;cad[3]=76; float *t = (float*)&cad;printf("%f %d %xrn", *t, cad, cad);
Su resultado tal vez sea logico o no: 67201208.
zairillo:
Lo probaré lo que me dices, ya entendí que no es una cadena, pero según me dijeron si le ponía al final, sí que sería como una cadena.
Y a la hora de poner el printf, ¿Por qué sacas 3 variables?
printf("%f %d %xrn", *t, cad, cad).
Eternal Idol:
No tiene ninguna utilidad terminar un conjunto de bytes que no son ASCII en cero, sigue sin ser una cadena.
Lo de las 3 variables es a gusto del consumidor, 3 representaciones de los mismos bytes.
zairillo:
Eso del me lo habían dicho...no sabría tampoco mucho quien me lo dijo...jejeje
Muchas gracias Eternal Idol. Mañana lo probaré y te diré resultados.
Saludos!
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa