#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-12-06 14:11:31 发布