You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
1.8 KiB
96 lines
1.8 KiB
#include "utility.h"
|
|
|
|
/**
|
|
*@brief 16位字符高8位低8位转换
|
|
*@param i:要转化的数据
|
|
*@return 转换后的数据
|
|
*/
|
|
uint16 swaps(uint16 i)
|
|
{
|
|
uint16 ret=0;
|
|
ret = (i & 0xFF) << 8;
|
|
ret |= ((i >> 8)& 0xFF);
|
|
return ret;
|
|
}
|
|
/**
|
|
*@brief 32位字符高低位变换
|
|
*@param i:要转化的数据
|
|
*@return 转换后的数据
|
|
*/
|
|
uint32 swapl(uint32 l)
|
|
{
|
|
uint32 ret=0;
|
|
ret = (l & 0xFF) << 24;
|
|
ret |= ((l >> 8) & 0xFF) << 16;
|
|
ret |= ((l >> 16) & 0xFF) << 8;
|
|
ret |= ((l >> 24) & 0xFF);
|
|
return ret;
|
|
}
|
|
|
|
|
|
/**
|
|
*@brief 将一个 主机模式的unsigned short型数据转换到大端模式的TCP/IP 网络字节格式的数据.
|
|
*@param 要转换的数据
|
|
*@return 大端模式的数据
|
|
*/
|
|
uint16 htons(
|
|
uint16 hostshort /**< A 16-bit number in host byte order. */
|
|
)
|
|
{
|
|
#if ( SYSTEM_ENDIAN == _ENDIAN_LITTLE_ )
|
|
return swaps(hostshort);
|
|
#else
|
|
return hostshort;
|
|
#endif
|
|
}
|
|
|
|
/**
|
|
*@brief 将一个 主机模式的unsigned long型数据转换到大端模式的TCP/IP 网络字节格式的数据.
|
|
*@param 要转换的数据
|
|
*@return 大端模式的数据
|
|
*/
|
|
unsigned long htonl(
|
|
unsigned long hostlong /**< hostshort - A 32-bit number in host byte order. */
|
|
)
|
|
{
|
|
#if ( SYSTEM_ENDIAN == _ENDIAN_LITTLE_ )
|
|
return swapl(hostlong);
|
|
#else
|
|
return hostlong;
|
|
#endif
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
*@brief 将一个大端模式的TCP/IP 网络字节格式的数据转换到主机模式的unsigned short型数据
|
|
*@param 要转换的数据
|
|
*@return unsigned short模式的数据
|
|
*/
|
|
unsigned long ntohs(
|
|
unsigned short netshort /**< netshort - network odering 16bit value */
|
|
)
|
|
{
|
|
#if ( SYSTEM_ENDIAN == _ENDIAN_LITTLE_ )
|
|
return htons(netshort);
|
|
#else
|
|
return netshort;
|
|
#endif
|
|
}
|
|
|
|
|
|
/**
|
|
*@brief 将一个大端模式的TCP/IP 网络字节格式的数据转换到主机模式的unsigned long型数据
|
|
*@param 要转换的数据
|
|
*@return unsigned long模式的数据
|
|
*/
|
|
unsigned long ntohl(unsigned long netlong)
|
|
{
|
|
#if ( SYSTEM_ENDIAN == _ENDIAN_LITTLE_ )
|
|
return htonl(netlong);
|
|
#else
|
|
return netlong;
|
|
#endif
|
|
}
|
|
|