[LUGOS-PROG] checksum

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


Dne sobota 29. junij 2002 13:38 je Saso Zivanovic napisal(a):
> 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);
Upst. Najbz bo bolje
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