[elektro] C aritmetika értetlenség
Móczik Gábor
pm_levlista at progzmaster.hu
Fri Dec 27 23:13:54 CET 2013
2013.12.26. 18:36 keltezéssel, Skandar Graun írta:
> huzo_1_pos = ((long*)&sbuffer[3])[0] & 0xFFFFFF
>
> Ez lett az első bemásolt és működik.
> Köszönöm. Valahol én is a castolásra gyanakodtam, csak nem volt konkrét
> ötletem. A shiftelést próbáltam, ott ki is kergette belőle az adatot, ott
> is castolni kell.
> A uC pic18f8722, 40 megán járatva, a feladatra egyébként megfelelne... csak
> a bájtonkénti eléréssel még nem vagyok teljesen rendben. A
> generictypedefs.h ad rá megoldást, csak utána megint olyan hibaüzenetek
> vannak, amikkel még nem küzdök.
> Majd... :)
Cast ne maradjon ki sehonnan, mert tapasztalataim szerint a fordító
szinte soha nem tudja mit akar az ember. :-)
A fenti kód tökéletes, ha a bejövő adat és a processor endianness
egyforma. Mivel működik, gondolom jelen esetben igen, csak mondom, hogy
ezt vedd figyelembe, pláne ha át fogod vinni a kódot máshová.
Érdemes makrókat írni ilyen konverziókra, és akkor csak egy helyen kell
átírni, ha rendszerváltás van. :-)
Vannak a network stackekben szabványos htons(), ntohs() függvények
(makrók), ezeket szerintem célszerű ilyen esetekben használni, még ha a
net stack többi része nem is kell éppen.
More information about the Elektro
mailing list