Reputation: 10539
I have a struct
similar to:
typedef struct _pair_t{
uint16_t keylen; // 2
uint32_t vallen; // 4
} __attribute__((__packed__)) pair_t;
I will be using mmap
to read from a file, so I want to store the numbers as big endian.
Do I need to do htobe16
/ betoh16
or there is some __attribute__
that can do this for me?
Upvotes: 0
Views: 244
Reputation: 249153
You need to use htobe16 or htons or similar. There's no way in most compilers to declare a variable as having a different endianness.
I'm aware of a (paid, commercial) compiler which had a switch to turn the entire program into the "opposite" endianness, but that's not quite what you want, and I'm sure you don't want to pay for it.
Upvotes: 5