#include <arpa/inet.h>
uint32_t htonl(uint32_t hostlong); //uint32_t主机序转换网络序
uint16_t htons(uint16_t hostshort); //uint16_t主机序转换网络序
uint32_t ntohl(uint32_t netlong); //uint32_t网络序转换主机序
uint16_t ntohs(uint16_t netshort); //uint16_t类型网络序转换主机序
//uint64_t 网络转本地
unsigned long long ntohll(unsigned long long val)
{
if (__BYTE_ORDER == __LITTLE_ENDIAN)
{
return (((unsigned long long )htonl((int)((val << 32) >> 32))) << 32) | (unsigned int)htonl((int)(val >> 32));
}
else if (__BYTE_ORDER == __BIG_ENDIAN)
{
return val;
}
}
//uint64_t 本地转网络
unsigned long long htonll(unsigned long long val)
{
if (__BYTE_ORDER == __LITTLE_ENDIAN)
{
return (((unsigned long long )htonl((int)((val << 32) >> 32))) << 32) | (unsigned int)htonl((int)(val >> 32));
}
else if (__BYTE_ORDER == __BIG_ENDIAN)
{
return val;
}
}
C语言16位,32位,64位数据的本地字节序与网络字节序转换
最新推荐文章于 2023-11-22 03:00:00 发布
这段代码提供了uint64_t类型在主机序和网络序之间的转换方法。对于little-endian和big-endian系统,它使用htonl和ntohl函数来确保数据在网络中的正确表示。
摘要由CSDN通过智能技术生成