Miten poimia matala tavu float muuttuja ja tallenna se char muuttuja?

M

mana111

Guest
hi minun pitää purkaa matala tavu float muuttuja ja tallenna se char muuttuja mitään ehdotuksia thanx
 
Se riippuu tavu tilattaessa koneeseen. eli kone on little endian tai big endian. Tässä on C koodi little endian float; / / float muuttujaa, jonka matala tavu tarvitaan char * ptr, b, ptr = (char *) &a; b = ptr [0]; / / b sisältää matala tavu nyt. .. Toivottavasti tämä on mitä u halusi.
 
# Define LOBYTE () (* ((unsigned char *) & ())) # define HIBYTE () (* ((unsigned char *) & () + 1))
 
Tässä tapa tehdä se, joka on riippumaton endianness:
Code:
 char GetLsb (float * f) {int a = 1; return ((char *) f) [(sizeof (float) -1 )*!(*( char *) &)];} float f = 123,456, char c = GetLsb (& f)
edellä muutettiin kohti booklog ehdotusta (ks. seuraava viesti), koska sain liian fiksu ja yritti ottaa osoitteen vakio .
 
Hei Lambtron riippumatta u ovat kirjoittaneet, vaatia muokkausta. Oikea koodi on alla char GetLsb (float * f) {int a = 5; return ((char *) f) [(((char *) &) [0] == 5))? 0: (sizeof (float) -1)];}
 
Anteeksi olen kokeillut mutta liikaa virheitä ota Haluan muuntaa log rutiini perustasolta C ja tiedän, että siellä on log-toiminto, mutta tarvitsen sitä yksityiskohtaisesti kuin se perus-koodi voi kukaan muuttaa tämän minulle hyvä --- -------------------------------------------------- ---------- "Luo joidenkin muuttujien käytettäväksi LN ja LOG Dim LOG_VALUE kuin Float Dim LOG_POWER kuin Float Dim LOG_TEMP kuin Float Dim LOG_X kuin Float Dim LOG_FACTOR kuin Float Dim LOG_XSQR kuin Float Dim LOG_N kuten Byte Dim LOG_TEMP2 kuten Byte LNC: "Emme voi olla ln (1) joten meidän täytyy palata nolla, jos se on, jos LOG_VALUE.Byte0 = 0 Then LOG_VALUE = 0: Return" ero LOG_N.BYTE0 ja $ 7E on "määrä 2 ^ LOG_N n että haluamme kertoa kertaa ln (2) Jos LOG_VALUE.Byte0 12 LOG_VALUE = LOG_VALUE + LOG_FACTOR Return ------------------------- ---------------------------------- Kiitos paljon
 
Mielestäni rakenne ja unioni on paras unionissa {float-arvo; 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 nyt contais 4 tavua float muuttuja
 
atmelAVR91 i dont osata käyttää sitä minun koodi voisitteko kirjoittaa minun Basic-koodia käyttäen menetelmää? thankx
 

Welcome to EDABoard.com

Sponsor

Back
Top