Tag: htonl

C ++中是否有64位整数的“标准”htonl函数?

我正在研究memcache协议的实现,在某些情况下,它使用64位整数值。 这些值必须以“networking字节顺序”存储。 我希望有一些uint64_t htonll(uint64_t value)函数来进行更改,但不幸的是,如果存在,我找不到它。 所以我有1或2个问题: 有没有任何便携式 (Windows,Linux,AIX)标准function来做到这一点? 如果没有这样的function,你会怎么实现呢? 我想到了一个基本的实现,但我不知道如何在编译时检查字节序以使代码可移植。 所以你的帮助是在这里比欢迎;) 谢谢。 这是我写的最后的解决scheme,感谢Brian的解决scheme。 uint64_t htonll(uint64_t value) { // The answer is 42 static const int num = 42; // Check the endianness if (*reinterpret_cast<const char*>(&num) == num) { const uint32_t high_part = htonl(static_cast<uint32_t>(value >> 32)); const uint32_t low_part = htonl(static_cast<uint32_t>(value & 0xFFFFFFFFLL)); return (static_cast<uint64_t>(low_part) << […]