Я конвертирую приложение vxWorks в Linux.Определить порядок байтов uint32_t
Раньше я был union
с word
и struct
так, что, когда я получил доступ к членам struct
, я мог бы использовать word's
расположение, чтобы построить мои struct
членов.
Однако я не помню, как я это понял, и он работает с полем vxWorks. На моем случае VxWorks, макет:
typedef union Status
{
struct fields
{
uint32_t byteA : 1; // <31>
uint32_t blank : 23; // <30:8>
uint32_t bytesN : 8; // <7:0>
} fields;
uint32_t word;
}
Я уже столкнулся с некоторыми вопросами обратным порядком байтов при переносе с VxWorks на Linux. Таким образом, важно выяснить расположение uint32_t
на linux.
не должно быть что-то вроде этого делать трюк? 'uint32_t foobar = 0x00ff00ff; if (((char *) foobar) [0] == 0xff)/* one endianess */ else/* другой */' – Alex
В чем вопрос? – anatolyg
Вы спрашиваете о http://stackoverflow.com/questions/6359629/union-hack-for-endian-testing-and-byte-swapping? – Gnawme