ip字符串转换成网络字节续的int型 inet_aton 源代码

原创 2006年06月13日 13:58:00

int
inet_aton(const char *cp, struct in_addr *ap)
{
    int dots = 0;
    register u_long acc = 0, addr = 0;

    do {
 register char cc = *cp;

 switch (cc) {
 case '0':
 case '1':
 case '2':
 case '3':
 case '4':
 case '5':
 case '6':
 case '7':
 case '8':
 case '9':
     acc = acc * 10 + (cc - '0');
     break;

 case '.':
     if (++dots > 3) {
  return 0;
     }
     // Fall through

 case '/0':
     if (acc > 255) {
  return 0;
     }
     addr = addr << 8 | acc;
     acc = 0;
     break;

 default:
     return 0;
 }
    } while (*cp++) ;

    // Normalize the address
    if (dots < 3) {
 addr <<= 8 * (3 - dots) ;
    }

    //Store it if requested
    if (ap) {
 ap->s_addr = htonl(addr);
    }

    return 1;   
}

linux 内核中ip字符串与整数相互转换 手动实现inet_aton 与inet_ntoa 的功能

最近在从ip 数据包中获取源IP时,由于源IP是一个unsigned int 的32位整数,而且内核中无法调用inet_aton函数,所以需要自己编程,将ip字符串转换成32位的整数。   初步想想...
  • peterbig
  • peterbig
  • 2014年01月22日 18:18
  • 2651

IP转换为32位无符号数(即,inet_aton函数)

上周跟着宿舍一哥们去海豚浏览器霸面,问我的题比较简单,二分查找的;当时莫名其妙的紧张了,答的不好,被鄙视了。 不过问宿舍哥们的题是IP转换成无符号32位整数,当时我感觉这个好像很熟悉的,就是想不起来...
  • skylinesky
  • skylinesky
  • 2012年05月29日 01:33
  • 2941

C语言中怎么把Int型转成字符型

C语言中怎么把Int型转成字符型,?C语言,标准库函数中有itoa(int,char*s,radix) 和 ltoa(long,char*s,radix) 下面是一个Sourceforge.org上的...
  • Mobidogs
  • Mobidogs
  • 2007年03月14日 11:14
  • 1760

ip与int之间的转化函数

/* * purpose : transfer ip to u_int32_t * @Param IPdotdec : ip * return u_int_32 : the result ...
  • Joyyzhang
  • Joyyzhang
  • 2016年07月18日 17:39
  • 365

小练习 - IP地址int与string相互转换C实现

有次用到了IP地址与str的转换,不想用socket的库函数,发现网上很多实现都挺啰嗦的,自己实现一个记录下。/* ip 字符串合法性由调用者保证 */ unsigned int ip_str2int...
  • thisinnocence
  • thisinnocence
  • 2017年03月13日 23:10
  • 913

IP地址转换为unsigned long(函数inet_addr和inet_aton)

inet_addr 将"数字+句点"的格式的IP地址转换到unsigned long中,返回值已经是按照网络字节顺序的 相反inet_ntoa把类型为struct in_addr的数据转化为"数字+句...
  • yiziweiyang
  • yiziweiyang
  • 2016年08月10日 19:38
  • 858

mysql 使用inet_aton和inet_ntoa处理ip地址数据

本文将介绍如何在数据库中使用合适格式保存ip地址数据,并能方便的对ip地址进行比较的方法。...
  • fdipzone
  • fdipzone
  • 2015年10月31日 12:26
  • 12223

c语言 int与byte[]互相转换

c语言 int与byte[]互相转换 root@ubuntu:/media/mtk6795/alps/sunwave_pub# gcc -g test.c root@ubuntu:/media/mt...
  • devwang_com
  • devwang_com
  • 2016年11月26日 10:32
  • 2064

Linux下网络IP地址的转换,主机字节顺序和网络字节顺序的转换。

Linux下网络IP地址的转换函数 网络IP地址本是用32位二进制来表示的,为了记忆的方便可以用点分十进制来表示IP地址,同时,网络IP地址在网络传输和计算机内部的存储方式也不同,需要用函数来进行转...
  • iw1210
  • iw1210
  • 2013年03月05日 10:57
  • 4900

sql 语句 IP处理函数inet_aton()和inet_ntoa()

from http://dev.mysql.com/doc/refman/5.1/zh/functions.html     *    INET_ATON(expr) 给出一个作为字符串的...
  • Shb_derek
  • Shb_derek
  • 2013年11月26日 10:18
  • 1197
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ip字符串转换成网络字节续的int型 inet_aton 源代码
举报原因:
原因补充:

(最多只允许输入30个字)