# Doppelwort formatieren



## Sybkal (10 Mai 2011)

Hi,

ich habe folgendes Problem:

UNd zwar lese ich aus einer S7 ein 2 aueinanderfolgende doppelworte also 4 bytes aus. Hab keine ahnung von S7 ist aber im Format Real. Dies hat wohl immer 2 Doppelworte.

Die Antwort in meine Software ist eine 32bit Binärzahl. Diese Soll eine Kommazahl darstellen.

Wie komm ich von der 32Bit binärzahl zur Kommazahl???

Kann mir jemand da helfen??


----------



## winnman (10 Mai 2011)

2 Doppelworte sind 8 byte!

vielleicht hilft das schon


----------



## Paule (10 Mai 2011)

Sybkal schrieb:


> Hab keine ahnung von S7 ist aber im Format Real. Dies hat wohl immer 2 Doppelworte.


Eine Realzahl benötigt 1 Doppelwort == 32 BIT


----------



## Sybkal (11 Mai 2011)

Ich habe auch die 32Bit ausgelesen ging ja irgendwie nicht anders. Jetzt wollte ich die 32Bit Dualzahl iumwandeln in Dezimal. Und das ging gar nicht. 
Hab jetzt die Lösung genommen, dass ich die Zahl multipliziere mit 10 oder 100 oder 1000 sodass keine Kommazahl mehr drin steht. Und diese Zahl konnte ich einfach auslesen und in Dezimal umwandeln.

Danke für eure Antworten


----------



## LowLevelMahn (11 Mai 2011)

> dass ich die Zahl multipliziere mit 10 oder 100 oder 1000 sodass keine Kommazahl mehr drin steht



hast du mal probiert den 32Bit-Wert direkt in einen float zu konvertieren?
sollte ein ieee 754 konformer float-wert sein d.h. in z.B. c/c++ könntest du einfach

int i = 1234;
float f = *(float*)&i;

schreiben (in anderen sprache sieht es auch nicht viel anders aus - oder du brauchst konverter z.B. bei c#)


----------

