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