C, int --> 2x char

Josef Štengl ok1ced na nagano.cz
Čtvrtek Květen 23 14:03:44 CEST 2013


správně je:
uint16_t z = 0x1234; /* jen  aby bylo jasná velikost int a znaménko. :-) */

uint8_t x = (uint8_t)(z >> 8u);
uint8_t y = (uint8_t)z;

/* funguje to všude, kde jsou definovány typy uintN_t.  Typy jsou 
použity ze inttypes.h (stdint.h). */

/* ano, je to trošku puristické (jde to i více :-). */
ced

přesuny přes pointery to lze, ale je to nedoporučované a závislé na 
endianitě. Pomocí posunů to dokáže zoptimalizovat lecjaký kompilátor.

ced


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


Další informace o konferenci Hw-list