其作用类型:ntohl、htonl、ntohs、htons 函数的作用,因为要考虑兼容 int128、int64 等数据类型。
IPV6 肯定是 int128 了,使用这两个函数可以帮助人们计算IPV6的地址范围等。
template <class T> static T NetworkToHostOrder(const T& network) noexcept {
#if (__BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__) /* *((char*)(&__BYTE_ORDER__)) */return network;
#elseT hostorder{};char* __dst = (char*)&reinterpret_cast<const char&>(hostorder);char* __src = (char*)&reinterpret_cast<const char&>(network);__src += sizeof(network);for (int i = 0; i < sizeof(network); i++) {__src--;*__dst = *__src;__dst++; /* *__dst++ = *--__src; */}return hostorder;
#endif}template <class T> static T HostToNetworkOrder(const T& host) noexcept { return NetworkToHostOrder<T>(host); }