如何将struct成员存储为big endian

时间:2015-01-07 07:23:49

标签: c struct int endianness uint32-t

我有struct类似于:

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

我将使用mmap来读取文件,因此我希望将这些数字存储为大端。

我是否需要执行htobe16 / betoh16或者有一些__attribute__可以为我执行此操作?

1 个答案:

答案 0 :(得分:5)

您需要使用htobe16或htons或类似物。大多数编译器都没办法将变量声明为具有不同的字节序。

我知道一个(付费的,商业的)编译器,它有一个开关将整个程序转换为"反对"结束,但那不是你想要的,而且我确定你不想付钱。