- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章IP处理函数inet_aton()和inet_ntoa()使用说明由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
MYSql的IP对int的转换函数 select inet_aton(ip) from table_name; 网络地址: 192.168.33.123 每一个值最大不会越过255,也就是十六进制的FF,两个Byte刚好表示的最大值是255, 这样子,就可以用一个32位的整形来保存这个地址 192 168 33 123 1100 0000 1010 1000 0010 0001 0111 1011 把这些二进制合在一起就是32位的数了 11000000101010000010000101111011 十进制为 3232244091 * INET_ATON(expr) 给出一个作为字符串的网络地址的"点地址"(如127.0.0.1)表示,返回一个代表该地址数值的整数。地址可以是4或8比特地址。 mysql> SELECT INET_ATON('209.207.224.40'); -> 3520061480 产生的数字总是按照网络字节顺序。如上面的例子,数字按照 209×2^24 + 207×2^16 + 224×2^8 + 40 进行计算。 INET_ATON() 也能理解短格式 IP 地址: mysql> SELECT INET_ATON('127.0.0.1'), INET_ATON('127.1'); -> 2130706433, 2130706433 注释: 在存储由INET_ATON() 产生的值时,推荐你使用 INT UNSIGNED 列。假如你使用 (带符号) INT列, 则相应的第一个八位组大于127的IP 地址值会被截至 2147483647 (即, INET_ATON('127.255.255.255') 所返回的值)。请参见11.2节,“数值类型”。 * INET_NTOA(expr) 给定一个数字网络地址 (4 或 8 比特),返回作为字符串的该地址的电地址表示。 mysql> SELECT INET_NTOA(3520061480); -> '209.207.224.40' 在做项目时,并不知道这两个函数,所以对IP的处理都是自己写的函数,但是使用时效率却是十分的差,下面函数是把IP转化成整数: 。
复制代码代码如下
CREATE FUNCTION `transIPtoInt`(ip char(31)) RETURNS char(31) begin DECLARE value1 CHAR(10); DECLARE value2 CHAR(10); DECLARE value3 CHAR(10); DECLARE value4 CHAR(10); set value1=SUBSTRING_INDEX(ip, '.', 1); set value2=SUBSTRING_INDEX(ip, '.', 2); set value2=SUBSTRING_INDEX(value2, '.', -1); set value3=SUBSTRING_INDEX(ip, '.', -2); set value3=SUBSTRING_INDEX(value3, '.', 1); set value4=SUBSTRING_INDEX(ip, '.', -1); set value1=value1<<24; set value2=value2<<16; set value3=value3<<8; return value1+value2+value3+value4; end; 。
为了IP地址比较的方便,我还写了一个把IP地址中每一段都补足三位的函数,如下: 。
复制代码代码如下
CREATE FUNCTION `fillIp`(ip char(31)) RETURNS char(31) begin DECLARE value1 CHAR(31); DECLARE value2 CHAR(10); DECLARE value3 CHAR(10); DECLARE value4 CHAR(10); set value1=SUBSTRING_INDEX(ip, '.', 1); set value2=SUBSTRING_INDEX(ip, '.', 2); set value2=SUBSTRING_INDEX(value2, '.', -1); set value3=SUBSTRING_INDEX(ip, '.', -2); set value3=SUBSTRING_INDEX(value3, '.', 1); set value4=SUBSTRING_INDEX(ip, '.', -1); set value1=LPAD(value1,3,'0'); set value2=LPAD(value2,3,'0'); set value3=LPAD(value3,3,'0'); set value4=LPAD(value4,3,'0'); return CONCAT(value1,'.',value2,'.',value3,'.',value4); end; 。
以下是一些补充 * INET_ATON(expr) 给出一个作为字符串的网络地址的"点地址"(如127.0.0.1)表示,返回一个代表该地址数值的整数。地址可以是4或8比特地址。 mysql> SELECT INET_ATON('209.207.224.40'); -> 3520061480 产生的数字总是按照网络字节顺序。如上面的例子,数字按照 209×2563 + 207×2562 + 224×256 + 40 进行计算。 INET_ATON() 也能理解短格式 IP 地址: mysql> SELECT INET_ATON('127.0.0.1'), INET_ATON('127.1'); -> 2130706433, 2130706433 注释: 在存储由INET_ATON() 产生的值时,推荐你使用 INT UNSIGNED 列。假如你使用 (带符号) INT列, 则相应的第一个八位组大于127的IP 地址值会被截至 2147483647 (即, INET_ATON('127.255.255.255') 所返回的值)。请参见MySQL文档中的“数值类型”。 * INET_NTOA(expr) 给定一个数字网络地址 (4 或 8 比特),返回作为字符串的该地址的电地址表示。 * mysql> SELECT INET_NTOA(3520061480); -> '209.207.224.40' -------------------------------------------------------------------------------------------------- 整型字段的比较比字符串效率高很多,这也符合一项优化原则:字段类型定义使用最合适(最小),最简单的数据类型。 inet_aton()算法,其实借用了国际上对各国IP地址的区分中使用的ip number。 a.b.c.d 的ip number是: a * 256的3次方 + b * 256的2次方 + c * 256的1次方 + d * 256的0次方。 -------------------------------------------------------------------------------------------------- 利用mysql的内置函数处理时间戳问题 eg : select FROM_UNIXTIME(UNIX_TIMESTAMP(),'%Y %D %M %h:%i:%s %x'); 结果: 2004 3rd August 03:35:48 2004 。
最后此篇关于IP处理函数inet_aton()和inet_ntoa()使用说明的文章就讲到这里了,如果你想了解更多关于IP处理函数inet_aton()和inet_ntoa()使用说明的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
//变量 $stat_ip 位于表 Hasoffers 中,要检查它是否位于列值 network_start_ip 和 network_end_ip 之间,后者位于另一个名为 Blacklisted
当我尝试使用 INET_ATON 函数将 IP 作为整数插入数据库时: insert into network (NwID,IP,Subnetz) values ('1','INET_ATON(1
在我的数据库中,我使用 INET_ATON 存储 IP (ipv4)
我有这个运行良好的代码: #include #include #include int main(int argc, char *argv[]) { struct in_addr add
我正在尝试根据给定的命令行参数初始化套接字,argv1 是 ip,argv2 是端口。端口可以根据需要工作,但创建 IP 地址是问题。预期输入为 ./client.out 10.5.10.20 8
我的脚本是: foreach (@missing) { my $ipdone = $_; $sth = $dbh->prepare("UPDATE tbl_ips SET search
在 Mysql 数据库中,我有一个表,我试图在其中存储 IPv4 地址。该表由两列组成:“_id”(主键)和一个整数列,我想在其中使用 INET_ATON 存储 ip 地址。我使用以下命令将记录插入到
我正在向日志表中插入数据,包括 IP 地址。由于某种原因,IP 列有时为 NULL。在大多数情况下(所有记录的 99.9%)IP 被正确记录。 IP 使用 inet_aton() 函数存储在一个无符号
我应该是瞎了,因为我在 ubuntu 和 debian 的发行版中找不到这些命令,也没有包含它们的包。 我应该自己用 C 编写代码和编译它们(或者用 perl 或其他任何语言编写或查找此代码)还是它(
我想将一串IP地址转换成对应的十六进制数。下面是这样做的程序,但我得到了倒数。例如,如果字符串为 128.2.194.242,则结果为 f2c20280。当我尝试使用 inet_ntoa 从十六进制字
我需要在插入前将 INET_ATON 添加到 ip 字段 INSERT INTO (`id`,`ip`) VALUES (NULL,'127.0.0.1'); 我需要数据库在插入之前透明地转换ip。并
我正在将一些为 linux 系统编写的代码转换为 windows 系统。我正在为我的 Windows 系统使用 C++,并且想知道函数 inet_aton 的等价物。 最佳答案 Windows 支持
是 inet_aton线程安全?我知道根据 UNP POSIX 不需要很多 Sockets API 是线程安全的,所以我必须假设它们不是,但一般来说我怎么知道某些东西在 Perl 中是否是线程安全的?
我正在尝试将 IP 地址存储到我的数据库中,并且我正在使用 INET_ATON,如下所示, $sql = " INSERT INTO pin ( page_id, user_id,
我有一个 MySQL 查询 SELECT * FROM table WHERE INET_ATON("10.0.0.1") BETWEEN INET_ATON(s_ip) AND INET_ATON(
我正在使用 inet_aton 将 IPv4 IP(216.12.207.142) 转换为字符串 3624718222。为此我使用了以下代码: ip_dec = unpack('>L', inet_a
我正在寻找一些函数来验证给定的字符串是否是有效的 ipv4 地址,但 inet_aton() 似乎对“11”和“1.1”这样的字符串很满意 验证 ipv4 字符串的最佳方法是什么。 #include
inet_aton 难道不应该规范化互联网地址的点版本吗?为什么我得到以下示例的不同输出值? int main(){ char USER_IP[16] = "192.168.002.025";
是否有必要在 MySQL 中使用unsigned 整数列来存储 IP(v4) 地址(已使用 INET_ATON 转换)? 我会自发地认为这真的无关紧要,因为无论该字段如何定义,相同的数据都将用于通过
有没有办法执行 mysql select 查询,例如: select INET_ATON(ip_address), id from table ... 由于列中的 IP 无效而导致 INET_ATON
我是一名优秀的程序员,十分优秀!