如何将结构成员存储为大端

How to store a struct member as big endian

我有一个 struct 类似于:

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

我将使用 mmap 从文件中读取,所以我想将数字存储为大端。

我需要做 htobe16 / betoh16 还是有一些 __attribute__ 可以为我做这件事?

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

我知道一个(付费的,商业的)编译器有一个开关可以将整个程序转换为 "opposite" 字节顺序,但这不是你想要的,我相信你不'想付钱。