Как сохранить член структуры как big endian

У меня есть struct похожий на:

typedef struct _pair_t{
    uint16_t    keylen;     // 2
    uint32_t    vallen;     // 4
} __attribute__((__packed__)) pair_t;

Я буду использовать mmap читать из файла, поэтому я хочу сохранить числа с прямым порядком байтов.

Нужно ли делать htobe16 / betoh16 или есть некоторые __attribute__ что может сделать это для меня?

1 ответ

Решение

Вам нужно использовать htobe16 или htons или аналогичные. В большинстве компиляторов нет способа объявить переменную с другим порядком байтов.

Мне известен (платный, коммерческий) компилятор, у которого был переключатель, чтобы превратить всю программу в "противоположный" порядок байтов, но это не совсем то, что вы хотите, и я уверен, что вы не хотите за него платить,

Другие вопросы по тегам