Re: C: Arduino : Přesun pole bytů do proměnné unsigned long
Petr Labaj
labaj na volny.cz
Středa Listopad 8 23:16:41 CET 2023
Ale při jakékoli vnitřní reprezentaci by snad htons a ntohs měl dávat
správné výsledky, ne?
Tyhle funkce/makra jsou přece dělaná tak (a na každé platformě jsou tedy
nutně specifická), aby výsledek byl vždy ten očekávaný.
Tedy pro integer. Float reprezentace skutečně může být kdovíjaká.
PL
*******************
Dne 8.11.2023 v 20:03 Miroslav Mraz napsal(a):
> Nedá. Nikdy nevíte, jakou blbost kdo vymyslí. Například gcc pro PDP11 má
> __BYTE_ORDER__ = 3412 a jste namydlený. Já do toho nechci moc
> zasahovat, je to složitá problematika, ale dneska používají pro přenos
> čísel JSON a asi vědí proč.
> Jako jednorázovka pro přenos mezi definovanými zařízeními se dá
> jednoduše přetypovat a pak případně použít něco jako
> __builtin_bswap32(), ale udělat to obecně nejde. A určitě to nejde pro
> signed - nikde není zaručeno, že znaménkový typ je vždy dvojkový
> doplněk, o float a double nemluvě.
>
> Mrazík
>
> On 08. 11. 23 19:36, Petr Labaj wrote:
>> Spíš možná SHIFTovat a ORovat.
>>
>> Skoro si myslím, že při použití funkcí/maker typu htons a ntohs a
>> přetypováním ukazatelů nebo unionem se dá udělat i přenositelný a
>> spolehlivý kód.
>> Ale třeba je to jen můj vrozený optimismus/naivita.
>>
>> PL
Další informace o konferenci Hw-list