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