Arduino - 32 bitu promenna ze 4 byte
Miroslav Mraz
mrazik na volny.cz
Pondělí Prosinec 16 14:18:44 CET 2024
Tyhle funkce sice existují, ale v bare-metal dost problematicky.
Předpokládá to síťování a to není úplně běžné. Třeba v newlib je to
zašité v machine/endian.h a samo sebou vše vede přímo na
__builtin_bswap32, příp. __builtin_bswap16 o kterém jsem se zmínil
minule. Takže když to použijete rovnou, nemusíte hledat hlavičku, která
by měla být podle manuálu arpa/inet.h. Pro PC tam skutečně je, ale
definice těch funkcí je stejně někde jinde (netinet/in.h nebo jinde).
Je to zkrátka bordel.
Mrazík
On 15. 12. 24 23:47, Petr Labaj wrote:
> Protože se po síti často pohybují jiní indiáni než bydlí v počítačích,
> tak už odjakživa (co existují sítě) existují funkce ntohs, htons, ntohl,
> htonl.
> Je to zkratka z network-to-hardware-short, ... totéž opačně a totéž pro
> long.
> Jsou snad vždy a všude (od AVR po superpočítače od IBM), a jsou vždy
> správně pro danou platformu a maximálně zoptimalizované, protože v
> síťovém programování se to používá furt.
> Network order je vždy Big Endian.
>
> Takže Vaše použití by pak vypadalo nějak takto:
> PowerIO = ntohl (*(uint32_t *) (RX_Data+7));
>
> PL
>
Další informace o konferenci Hw-list