C: Cast von Int16 (short) in float (double) eines Zeigers

#1530246
Lesenswert?

Hi,

folgens mache ich:
1
float G1, G_inc, tmpwert;
2
Int16 *current_in, *current_out;
3
Int16 Buffer[100], k;
4

5
current_in = Buffer;
6

7
tmpwert = (float)current_in[i] *(G1-G_inc*k);
8
current_out[i] = (Int16)tmpwert;

Der Code ist vereinfacht dargestellt.

So, mein Problem ist, dass ich in tmpwert falsche Werte erhalte. Ich 
möchte die Berechnung so vornehmen, dass der Anfangszeiger von Buffer in 
current_in kopiert wird und ich mittels current_in die Multiplikation 
mit den float Werten vornehme. Damit dies geht, muss ich den Wert von 
Buffer jedoch casten als float. Aber es geht nicht!

Kann es sein, dass ich durch meine Methode den Zeiger selber caste? 
Müsste ich es dann so umschreiben?
1
tmpwert = current_in[i];
2
tmpwert = tmpwert *(G1-G_inc*k);
3
current_out[i] = (Int16)tmpwert;

Ich danke euch für eure Antworten! Kann den Code leider nicht 
überprüfen, hab mein DSP Board net da :-/

Gruß, Pascal
#1530486
Lesenswert?

an dem Code ist doch nix hardwareabhängiges drin.
probiers doch mal mit einem normalen c-compiler

mit dem bisschen code, was du hier vorwirfst kann man nichs sagen.

bis auf eine wird keine der Variablen initialisiert, i gar nicht erst 
deklariert.



prinzipiell sollte die berechenung ok sein, wenn du sicher gehen willst, 
setze doch einfach klammern.

tmpwert = ((float)(current_in[i])) *(G1-G_inc*k);

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren