如何将结构成员存储为大端
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" 字节顺序,但这不是你想要的,我相信你不'想付钱。
我有一个 struct
类似于:
typedef struct _pair_t{
uint16_t keylen; // 2
uint32_t vallen; // 4
} __attribute__((__packed__)) pair_t;
我将使用 mmap
从文件中读取,所以我想将数字存储为大端。
我需要做 htobe16
/ betoh16
还是有一些 __attribute__
可以为我做这件事?
您需要使用 htobe16 或 htons 或类似的。大多数编译器无法将变量声明为具有不同的字节顺序。
我知道一个(付费的,商业的)编译器有一个开关可以将整个程序转换为 "opposite" 字节顺序,但这不是你想要的,我相信你不'想付钱。