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