tugtug schrieb:
> Hallo,
>
> ich bekomme über eine CAN Nachricht im 8 Byte langen Datenfeld einen
> float Wert.
Nö.
Du kriegst zuallererst mal 8 Bytes. Nicht mehr und nicht weniger.
Das diese Bytes aus einem float stammen ist zwar nett und etwas, das du
weißt, aber im Moment nocht uninteressant. Denn noch sind das einfach
nur 8 Bytes.
>
> Ich möchte diesen gern in ein char[] speichern und mit printf ausgeben.
Wozu?
Wenn diese Bytes aus einem float stammen, dann möchtest du die doch auch
in einem float speichern und nicht in einem char[].
Ausserdem: warum char[]? char[] ist für Strings und nicht für floats.
1 | float Wert;
|
2 |
|
3 | memcpy( &Wert, can_dump_frame.data, sizeof(float));
|
4 | printf("\t Value: %f \n", Wert);
|
eventuell musst du beim memcpy noch die Adresse &Wert zurecht casten,
damit sie memcpy akzeptiert.
> So geht es aber nicht.
> Was mache ich falsch?
Du gehst unlogisch vor, überlegst dir nicht was du eigentlich wirklich
willst und lässt dich von Compiler-Fehlermeldungen auf eine falsche
Fährte locken. Kurz und gut: du hast dein C nicht ordentlich gelernt.
Das ist das was du falsch machst.