Makro v C - "text" to uint32_t

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Pondělí Listopad 6 21:21:29 CET 2017


A proc zrovna uint32_t?
Pokud chcete prave 4 znaky na 32b cislo tak nejak takto

uint32_t x = *(uint32_t *)"abcd";

kdyz makro, tak
#define MAKRO(s)  *(uint32_t *)(s)
kde s bude ten retezec.

Bezneji se ale pracuje s jednotlivymi znaky, to, co je mezi uvozovkami 
ma vlastnosti konstantniho pole znaku a da se k tomu pristupovat jako k 
poli cisel
char *s = "abcdefgh...";
uint8_t a0 = (uint8_t)s[0];
...
Z toho si pak taky muzete vyskladat libovolne hodnoty.

Dne 06.11.2017 v 21:13 Pavel Hudecek napsal(a):
> z "ble" by mohlo být např. 'b' + 'l'<<8 + 'e'<<16 + 0 nebo ty bajty v 
> opačném pořadí, je to vlastně jedno.
>
> Tzn. jde mi o to, jak se v makru dostat k číslům reprezentujícím 
> jednotlivé znaky textu. Zbytek si už pak vyřeším sám.
>
> PH
>
> -----Původní zpráva----- From: Jaroslav Buchta
>
> A co si predstavujete, ze v tom x ma pak byt? Muzete napsat priklad ve
> smyslu "xxxx" -> 0x.... ?
>
> Dne 06.11.2017 v 20:51 Pavel Hudecek napsal(a):
>> potřeboval bych makro, se kterým by šla konstrukce typu:
>>
>> uint32_t    x = MAKRO("ble");
>>
>> jen vůbec nevím, jak v makru pracovat s textem (const char) a ani 
>> nevím jak to hledat. 
>
> _______________________________________________
> 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