Jak předělat tuto funkci aby kopírovala byty zleva doprava? Jde to vůbec nebo se vždy kopírují bajty zprava doleva? Nebo to je podmíněno systémem?
void read4bytes(unsigned char ** pSourceStr, uint32_t* item)
{
memcpy(item,*pSourceStr,4);
*pSourceStr+=4;
}
Taky jsem to zkoušel převést:
*item = UINT32_SWAP_LE_BE_CONSTANT(*item);
a to krachlo, ne hned napoprvé ale pak to nakonec někde krachlo.
uint32_t UINT32_SWAP_LE_BE_CONSTANT(uint32_t val)
{
return ((uint32_t)
(
(((uint32_t) (val) & (uint32_t) 0x000000ffU) << 24) |
(((uint32_t) (val) & (uint32_t) 0x0000ff00U) << 8) |
(((uint32_t) (val) & (uint32_t) 0x00ff0000U) >> 8) |
(((uint32_t) (val) & (uint32_t) 0xff000000U) >> 24)
)
);
}