[LUGOS-PROG] checksum

Saso Zivanovic zivanovic at student.fmf.uni-lj.si
Sat Jun 29 13:38:51 CEST 2002


Dne sobota 29. junij 2002 10:32 je Marko Bevc napisal(a):
> kaj pa v primeru:
>
> sum+=*(var_abc+i);
>
Mogoce bos rabil se konverzijo tipa pointerja: 
sum+=(int*) *(var_abc+i);

Lahko bi pa poskusil tudi s podatkovnim tipom 'union'.

LP,
Saso


> ?
>
> lp,
> Marko
>
> On Sat, 29 Jun 2002, Blaz Antonic wrote:
> > Hello,
> >
> > Recimo da imam eno strukturo
> >
> > struct abc = {
> > 	unsigned long var1;
> > 	unsigned short var2;
> > 	unsigned char var3[8];
> > } * var_abc;
> >
> > ki okupira 4 + 2 + 8 bajtov. Ce gledam nanjo drugace je na mestu, kamor
> > kaze var_abc 7 zaporednih 16-bitnih (short) vrednosti. Recimo, da bi jih
> > rad sestel skupaj (v checksum). Kako se tega lotim ?
> >
> > int i;
> > unsigned short sum;
> >
> > for (i = 0; i < 7; i++)
> > 	sum += (unsigned short) var_abc[i];
> >
> > ni pravi nacin, gcc se pritozuje in izpljune error. Alternatiuve, ki sem
> > jih probal (in ne delajo) so
> >
> > 	sum += (unsigned short *) var_abc[i];
> >
> > 	sum += (unsigned short *) var_abc + i;
> >
> > 	sum += (unsigned short) var_abc + i;
> >
> > Vsaj zdi se mi, da sem te kombinacije probal, gcc pa napise nekaj
> > drugega (ampak se zmeraj ne dela).
> >
> > Probal sem tudi tako, da bi
> >
> > unsigned short * var_def[7];
> >
> > kazal na isto mesto kot var_abc, potem pa bi sesteval skupaj var_def[i].
> > Afaik tudi to ne dela.
> >
> > Blaz Antonic




More information about the lugos-prog mailing list