Как сохранить член структуры как 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 или аналогичные. В большинстве компиляторов нет способа объявить переменную с другим порядком байтов.
Мне известен (платный, коммерческий) компилятор, у которого был переключатель, чтобы превратить всю программу в "противоположный" порядок байтов, но это не совсем то, что вы хотите, и я уверен, что вы не хотите за него платить,