Re: C: Arduino : Přesun pole bytů do proměnné unsigned long

Miroslav Mraz mrazik na volny.cz
Čtvrtek Listopad 9 13:17:13 CET 2023


Napsal bych to asi takto
static unsigned char RX_Data[] = {0, 0, 0, 0x12, 0x34, 0x56, 0x78, 0, 
0xab, 0xcd};
void test () {
   uint32_t res4b = 0u;
   memcpy (&res4b, RX_Data + 3, sizeof(res4b));
   res4b = __builtin_bswap32  (res4b);   // pokud leze MSB jako první, 
jinak vynechat
   printf ("test4b:0x%08lX\n", res4b);

   uint16_t res2b = 0u;
   memcpy (&res2b, RX_Data + 8, sizeof(res2b));
   res2b = __builtin_bswap16 (res2b);    // stejně jako pro res4b
   printf ("test2b:0x%04X\n", res2b);
}
Funguje to, memcpy() se tam nijak neprojeví a připadá mi to čitelnější. 
Výstup je
test4b:0x12345678..
test2b:0xABCD..

Mrazík

On 08. 11. 23 17:27, Jirka Mww wrote:
> Teď mne ještě napadlo, že vlastně nevím, jaké je pořadí významnosti bytů 
> v tom unsignedlong. Je to tak, že nejvýznamější byte je první,
> nebo je poslední? Jsem z toho nějaký zmatený ((::
> 
> Zdravi
> Jirka Sloupenský  OK1MWW
> 
> 


Další informace o konferenci Hw-list