[elektro] C kérdés

Moczik Gabor pm_levlista at progzmaster.hu
Sat Sep 4 14:27:38 CEST 2010


Ferenc Toth wrote:
> A DataI be beolvasok egy 8bájtos adatot és ha ez egyenlö egy bizonyos 
> értékkel ami max FFFFFFFF lehet.

Vagyis szöveg formában tartalmaz egy 32 bites hexa számot?
Nem egyszeri eset, hanem többféle számmal is össze kell hasonlítani?

Ha igen, akkor át kell konvertálni a szöveget számra, és utána mindent 
lehet.

A konvertálás kb. annyi, hogy

unsigned char  dataI[8];
unsigned char  *p = dataI[0];
unsigned char  i;
unsigned long  value=0;

for (i=0; i<=7; i++) {
     value<<=4;
     if (*p>=0 && *p<=9) {
         value|=*p-'0';
     } else if (*p>='a' && *p<='f') {
         value|=*p-'a'+10;
     } else if (*p>='A' && *p<='F') {
         value|=*p-'A'+10;
     }
     p++;
}

if (value==0x12345678) ...

Lehetne p nélkül, indexelni mindenhol (dataI[i]), de így gyorsabb a kód.
Védett rendszerben az utolsó utasítás 'if (i<7) p++' legyen, különben 
general protection fault. :-)

-- 
((( Móczik Gábor  )))--((( e|mail: pm-01 |@| progzmaster |.| hu )))
((( S.k.y.p.e.: moczik )))



More information about the Elektro mailing list