#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 }