PDA

View Full Version : [C++] passare da un dato float al char...


DomusP45
18-04-2012, 12:07
Salve a tutti,
ho questo problema: ricevo in input dalla seriale un array di unsigned char di cui 4 rappresentano un dato float. Devo convertire tale dato in float e poi in char per concatenarlo in un vettore "char" che uso per l'output all'utente.

Dopo che ho letto l'array sulla porta (si chiama let ed ha dimensioni 8) devo prendere la parte che mi interessa, convertirla in float e poi in char. Io ho scritto questo codice:

unsigned char resp[4];
resp[0]=let[4];
resp[1]=let[5];
resp[2]=let[6];
resp[3]=let[7];
float* posit=(float *)resp; //conversione unsigned to float
char ri[4]; // vettore che devo concatenare
sprintf(ri,"%0.2f",*posit); //scrittura in ri del dato
strcat(risposta,ri); //concatenamento all'array di uscita "risposta"


ma non funziona bene..porta in output 0.00...come posso fare per ottenere questa cosa?

DomusP45
18-04-2012, 17:55
up

lorenzo001
18-04-2012, 20:10
Il float lo ottieni con

float posit = *((float *)(let+4));

direttamente da let senza usare resp

Per il resto, non capisco perché usi

char ri[4];

di soli 3 caratteri (+ terminatore) quando il numero sarà quasi certamente più lungo ... Dovrai prevedere un numero di cifre maggiori, magari

char ri[20];

e poi utilizzare la sprintf e la strcat.

DomusP45
18-04-2012, 20:52
Il float lo ottieni con

float posit = *((float *)(let+4));

direttamente da let senza usare resp

Per il resto, non capisco perché usi

char ri[4];

di soli 3 caratteri (+ terminatore) quando il numero sarà quasi certamente più lungo ... Dovrai prevedere un numero di cifre maggiori, magari

char ri[20];

e poi utilizzare la sprintf e la strcat.

cavolo veramente? è questo il problema? mannagg...lorenzo sei gentilissimo...provo e ti faccio sapere...