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