htobe64和endian.h的可移植性

时间:2015-01-04 21:56:29

标签: c

我需要在我的代码运行的任意机器上输入8个字节,以大端序排列。我相信我可以使用htobe64函数,但是在编译我的时候,我不确定它的可移植性 - 即endian.h的可用性 - 跨不同的机器架构和操作系统码。这是一种安全的便携式方法吗?或者使用不同的方法更好吗?

1 个答案:

答案 0 :(得分:2)

请使用以下便携式方法:

#include <stdint.h>

void write64be(unsigned char out[8], uint64_t in)
{
    out[0] = in >> 56 & 0xff;
    out[1] = in >> 48 & 0xff;
    out[2] = in >> 40 & 0xff;
    out[3] = in >> 32 & 0xff;
    out[4] = in >> 24 & 0xff;
    out[5] = in >> 16 & 0xff;
    out[6] = in >>  8 & 0xff;
    out[7] = in >>  0 & 0xff;
}