C# (2005) : 4Bytes in Float umwandlen

Gast #666582
Lesenswert?

Warum C#? Folter?

Cis ist eine Krüppelsprache a la Visual Basic deshalb Zeitverschwendung 
drum nimm C++. Übermorgen in 15 Jahren gibts das Zeuch eh nicht mehr.

>
Für dein Problem empfehle ich eine kurze Lib als COM-Object in C. Das 
geht mit dem Assistenten in vc6 und .net ganz leicht. COM ObjeKte kann 
man einfach einbinden.
Gast #666737
Lesenswert?

Hallo Patrick,

ich denke Du musst Dein Problem präziser Formulieren. Auf Deine Frage 
kann ich (und ich denke auch andere) so keine sinnvolle Antwort geben.
Was willst Du machen? Willst Du die 4 Byte in EIN float zusammenfassen? 
Was steht dann vor und was nach dem Komma? Willst Du die 4 Byte einzeln 
jeweils in ein float umwandeln??? Was für eine Ergebnis willst Du haben?

Gruß
Florian
Gast #666757
Lesenswert?

Ok das hab ich vergessen zu sagen. Ich verwende auf einem 
Mikrocontroller einen AD-Wandler dieser liefert mir zuerst einen float 
Wert. Anschließend wandle ich diesen float Wert in 4 Bytes und sende 
dann diese 4 Bytes über den CAN-Bus. Jetzt möchte ich natürlich diese 4 
Bytes wieder in einen float Wert umwandeln (z.B. 1.3453). Wie kann ich 
dies in C# (2005 oder auch in C++ (MFC) realiseren?
Persönliche Seite #666762
Lesenswert?

Patrick wrote:
> Ok das hab ich vergessen zu sagen. Ich verwende auf einem
> Mikrocontroller einen AD-Wandler dieser liefert mir zuerst einen float
> Wert.
Sowas hab' ich ja noch nie gehört!

> Anschließend wandle ich diesen float Wert in 4 Bytes und sende
> dann diese 4 Bytes über den CAN-Bus. Jetzt möchte ich natürlich diese 4
> Bytes wieder in einen float Wert umwandeln (z.B. 1.3453). Wie kann ich
> dies in C# (2005 oder auch in C++ (MFC) realiseren?
Nunja, float ist nicht gleich float. Du müsstest herausfinden a) welches 
Float Format von deinem AD-Wandler kommt (?) und b) in welcher 
Reihenfolge du die Bytes sendest.
Gast #666820
Lesenswert?

>Cis ist eine Krüppelsprache a la Visual Basic deshalb Zeitverschwendung
>drum nimm C++. Übermorgen in 15 Jahren gibts das Zeuch eh nicht mehr.

Oh mann, wenn ich so ein unqualifiziertes Geblubber schon wieder
lesen muß...

Die Lösung deines Problems ist ganz einfach. Die Bitconverterklasse
ist dein Freund. Die Byteorder hängt natürlich von deinem µC ab.
1
byte[] b = new byte[4] { 56, 34, 23, 22 };
2
float f = BitConverter.ToSingle(b,0);
=> 1.220848E-25
1
byte[] b = new byte[4] { 22, 23, 34, 56 };
2
float f = BitConverter.ToSingle(b,0);
=> 0.00003864531

Ich will mal die Programmiersprache sehen, in der das mit Bordmitteln
einfacher zu lösen geht!
Gast #667542
Lesenswert?

>>Cis ist eine Krüppelsprache a la Visual Basic deshalb Zeitverschwendung
>>drum nimm C++. Übermorgen in 15 Jahren gibts das Zeuch eh nicht mehr.

>Oh mann, wenn ich so ein unqualifiziertes Geblubber "schon wieder"
>lesen muß...

Memoryeffekt scheint da.

Wie qualifiziert muss man für die Microsoftstrategie sein.
Java: Einfach den Mainframe mit dem PC vernetzen da nimmt man schon mal 
Einbußen hin, durch die einfache Skalierbarkeit hat man sogar Vorteile.

Jetzt noch so ein plattformabhängiger Dialekt. Kannst ja in Dein Windows 
Forms Programm nach jedem Statement ein {for (int i=0;i<1000;i++);} 
einflicken.

Dein freier Wille: Where do You want to go today? Learn about C#...

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