[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