C, int --> 2x char
Jaroslav Buchta
jaroslav.buchta na hascomp.cz
Čtvrtek Květen 23 13:48:44 CEST 2013
Kdyz jsme u tech chutovek, jak delate prenos z promenne typu unsigned,
ktera ovsem obsahuje hodnotu se znamenkem, do typu int?
cili napr:
unsigned u = 65535;
int i;
i = <neco> u;
aby v i bylo -1 ???
Ja zatim nechtel nikdy badat a na jistotu mi prijde pretypovani pres
ukazatel:
i = *((int*)&u)
Ale mozna to jde primocareji a hlavne takto asi prekladac donutim
umistit promennou do pameti (coz ale vetsinou je, protoze to vesmes
pouzivam na vyzobavani hodnot z nejaky struktur pri komunikaci).
A samozrejme stejny problem je i obracene ktery resim stejne.
A jak to definuje norma? Nejak se mi zda, ze to ruzne prekladace resily
ruzne, pokud napr. napisu primo i = u; nebo i = (int)u; ...
Dne 23. 5. 2013 13:38, Miroslav Draxal napsal(a):
>
> No jasně, já si stále nějak neumí do hlavy vštípit to přetypování. Že
> se s tím dají dělat psí kusy. Míra
>
> *From:*hw-list-bounces na list.hw.cz [mailto:hw-list-bounces na list.hw.cz]
> *On Behalf Of *Jaroslav Buchta
> *Sent:* Thursday, May 23, 2013 1:33 PM
> *To:* HW-news
> *Subject:* Re: C, int --> 2x char
>
> x = *(((char *)&z)+1)
> y = *(((char *)&z)+0)
>
> u Little Endian
> nektere zavorky jsou asi zbytecne
> A rozumny prekladac to udela stejne kdyz je to zapsane pres posuvy po
> optimalizaci.
>
> Dne 23. 5. 2013 13:28, Miroslav Draxal napsal(a):
>
> Dobrý den,
>
> int z= 0x1234;
>
> char x,y
>
> Jak jednoduše dostat do char x hodnotu HI bytu z int z (tj. 0x12)
> a do y dostat LO ze z (tj. 0x34)
>
> Posuvem ano, přes pointery lze? -- jenom mě to tak napadlo a
> neumím najít řešení. Míra
>
>
>
> __________ Informace od ESET NOD32 Antivirus, verze databaze 8364
> (20130523) __________
>
> Tuto zpravu proveril ESET NOD32 Antivirus.
>
> http://www.eset.cz
>
>
>
> _______________________________________________
>
> HW-list mailing list - sponsored bywww.HW.cz <http://www.HW.cz>
>
> Hw-list na list.hw.cz <mailto:Hw-list na list.hw.cz>
>
> http://list.hw.cz/mailman/listinfo/hw-list
>
>
>
>
> __________ Informace od ESET NOD32 Antivirus, verze databaze 8364
> (20130523) __________
>
> Tuto zpravu proveril ESET NOD32 Antivirus.
>
> http://www.eset.cz
>
>
>
> __________ Informace od ESET NOD32 Antivirus, verze databaze 8364
> (20130523) __________
>
> Tuto zpravu proveril ESET NOD32 Antivirus.
>
> http://www.eset.cz
>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20130523/9df6a6af/attachment.htm>
Další informace o konferenci Hw-list