下面我们来看一篇关于C语言中实现inet_aton和inet_ntoa函数功能的例子,希望这篇文章能够对各位带来帮助,具体的如下所示。
之前遇到过要自己实现inet_aton和inet_ntoa函数功能的问题,这里总结一下。
1 基本知识
网络字节序是大端模式,那么内存中的低地址存放的是数据的高位,内存中的高地址存放的是数据的低位。 inet_aton是将IPv4地址(点分法)转换成对应的十进制整数;而inet_ntoa是将十进制整数转换成对应的IPv4地址(点分法)。
2 完整代码
#include
#include
#include "print.h"
#define IP_ADRESS "192.168.1.177"
/*
* 将IPv4地址(点分法)转换成对应的十进制整数
* 原函数声明:
* int inet_aton(const char *cp, struct in_addr *inp);
*/
unsigned int __inet_aton( const char *c_ipaddr )
{
unsigned int u_ipaddr = 0;
unsigned int u_tmp = 0;
char c;
int i_base = 10;
int i_shift = 0;
int i_recycle = 0;
c = *c_ipaddr;
while( 1 )
{
u_tmp = 0;
while(