我有一个类似于:

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

我将使用struct从文件中读取,因此我想将数字存储为big endian。
我需要做的是mmap/htobe16还是有些betoh16可以帮我做?

最佳答案

您需要使用htobe16或htons或类似的。在大多数编译器中,无法将变量声明为具有不同的endianness。
我知道有一个(付费的,商业的)编译器,它有一个开关,把整个程序变成“相反的”端,但那不是你想要的,我相信你不想为此付出代价。

关于c - 如何将结构成员存储为大端,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27814353/

10-12 00:29