Wie zu extrahieren das Low-Byte eines float-Variable und speichern sie in einer char-Variablen?

M

mana111

Guest
hallo ich brauche, um das Low-Byte eines float-Variable extrahieren und speichern sie in einer char-Variablen Anregungen thanx
 
Es hängt davon ab Byte-Reihenfolge in der Maschine. dh die Maschine Little-Endian-oder Big-Endian. Hier ist ein C-Code für Little-Endian-float a; / / float-Variable, deren Low-Byte benötigt wird char * ptr, b; ptr = (char *) &a; b = ptr [0]; / / b enthält das Low-Byte eines jetzt. .. Hoffe, das ist, was u wollte.
 
# Define LOBYTE (a) (* ((unsigned char *) & (a))) # define HiByte (a) (* ((unsigned char *) & (a) + 1))
 
Hier ist ein Weg, es zu tun, das ist unabhängig von endianness:
Code:
 char GetLsb (float * f) {int a = 1; return ((char *) f) [(sizeof (float) -1 )*!(*( char *) & a)];} float f = 123.456; char c = GetLsb (& f);
Das obige war pro booklog Vorschlag (siehe nächster Beitrag) geändert, weil ich zu klug wurde und versuchte, die Adresse einer konstanten nehmen .
 
Hallo Lambtron, Whatever u geschrieben haben, müssen einige Änderungen. Der richtige Code sieht wie folgt char GetLsb (float * f) {int a = 5; return ((char *) f) [(((char *) & a) [0] == 5))? 0: (sizeof (float) -1)];}
 
sorry ich habe es aber zu viele Fehler bitte ich will ein Protokoll Routine von der Grundlagenforschung bis c umwandeln, und ich weiß, dass es eine Log-Funktion, aber ich brauche es, wie es in den grundlegenden Code detaillierten kann jeder wandeln diese für mich bitte --- -------------------------------------------------- ---------- "Erstellen Sie einige Variablen für die Verwendung mit LN und LOG Dim LOG_VALUE als Float Dim LOG_POWER als Float Dim LOG_TEMP als Float Dim LOG_X als Float Dim LOG_FACTOR als Float Dim LOG_XSQR als Float Dim LOG_N als Byte Dim LOG_TEMP2 als Byte LNC: "Wir können nicht ln (1), so dass wir eine Null zurückkehren müssen, wenn sie Wenn LOG_VALUE.Byte0 = 0 Then LOG_VALUE = 0: Return 'Der Unterschied zwischen LOG_N.BYTE0 und $ 7E der" Betrag wird 2 ^ LOG_N ist, dass wir wollen mal ln (2) Wenn LOG_VALUE.Byte0 12 LOG_VALUE = LOG_VALUE + LOG_FACTOR Return multiplizieren ------------------------- ---------------------------------- thanx viel
 
Ich denke, Struktur und Union ist am besten union {float value; struct {unsigned char value_a0; unsigned char value_a1; unsigned char value_a2; unsigned char value_a3;}} split floatcombo; floatcombo.value = 323947,24742424; floatcombo.split.value_aX ist jetzt contais 4 Byte Float-Variablen
 
atmelAVR91 ich weiß nicht, wie es in meinem Code verwenden könnten Sie bitte schreibe meine Basic-Code mit Ihrer Methode? thankx
 

Welcome to EDABoard.com

Sponsor

Back
Top