C, int --> 2x char

Miroslav Draxal evik na volny.cz
Čtvrtek Květen 23 14:04:24 CEST 2013


Tuhle potřebu jsem zatím neměl. 

Můj problém je v tom, že od mala jsem šel v asm už od atarka. No a teď když
jedu v C ( je to veliký pomocník) tak se kolikrát zastavím na malichernosti.
Viz předchozí problém, kde jsem to mohl vyřešit jednoduše přes rotaci ) ale
to já né, protože to vidím v hlavě, jak jsou to ve skutečnosti pouze dva
řádky v asm.

MOVFF Z, Y

MOVFF Z+1, Z

Ale prostě si neumím pomoct. A nechce se mi do toho vstupovat přes asm...
když C tak čistě.

V C jsem stále začátečník a dlouho budu (aspoň si to o sobě myslím) 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:49 PM
To: HW-news
Subject: Re: C, int --> 2x char

 

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 by www.HW.cz
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




__________ 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 8365 (20130523)
__________

Tuto zpravu proveril ESET NOD32 Antivirus.

http://www.eset.cz

------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20130523/2a391048/attachment.htm>


Další informace o konferenci Hw-list