Προς το περιεχόμενο

Int to Float μετατροπή. Αργή όπως ο θάνατος


Dr.Fuzzy

Προτεινόμενες αναρτήσεις

Δημοσ.
decimal τιμή που μου εμφανίζει ο debugger είναι -938432448 και στη δεύτερη -938432384.

ξέρεις τι είναι αυτό; είναι το 0xFFFFFFFFC810A840 δηλαδή είναι ΣΩΣΤΟ, αλλά έχεις πρόβλημα στο cast. Υποθέτω ότι έχει γίνει μετατροπή μεσω 64bit integer.

(αν θυμάσε είχα πεί να χρησιμοποιήσεις unsigned και όχι int, το πρόσιμο έβγαλε το 0xffffffff στην αρχή. Υπάρχουν εσωτερικές μετατροπές μεταξύ signed Τυπων ;) )

 

---------- Το μήνυμα προστέθηκε στις 18:08 ----------

 

Βάλε αυτόν τον κώδικα:

>
float int2float(int n,int *intp,float *floatp)  { 
int i;
 	for(i=0;i<n;i++){
	unsigned u = ((unsigned *)intp)[i];
	floatp[i] = *((float*)&u);
}
return XXXX <<< δεν έχεις γράψει τι πρεπει να επιστρεφει η συναρτηση σου την οποία έχεις
	//δηλώσει να επιστρέφει float!!!!
}

Δουλευει σωστά και με 32 και με 64 bit

 

---------- Το μήνυμα προστέθηκε στις 18:11 ----------

 

(float) *var

αυτό είναι λάθος!

θέλει *(float *)var

(αν το var είναι int*)

Δημοσ.

Έχεις δίκιο. Έβαλα unsigned int και έκανα cast τον pointer σε float και δουλεύει!!!!!!! Το κέρατο μου μέσα. Τόση ώρα για μια μ@λ@κί@. Ευχαριστώ πάντως για όλα (και για την ταλαιπωρία που σε έβαλα...)

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...