java inet aton_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
java inet aton_IP处理函数inet_aton()和inet_ntoa()使用说明相关推荐
- inet_aton mysql_MySQL_IP处理函数inet_aton()和inet_ntoa()使用说明,MYSql的IP对int的转换函数 select i - phpStudy...
IP处理函数inet_aton()和inet_ntoa()使用说明 MYSql的IP对int的转换函数 select inet_aton(ip) from table_name; 网络地址: 192. ...
- MySQL inet aton函数,基于Mysql的IP处理函数inet_aton()与inet_ntoa()的深入分析
有个统计需求,需要对IP进行分类统计,Mysql提供了inet_aton()和inet_ntoa()函数进程处理. 具体可以 INET_ATON(expr)给出一个作为字符串的网络地址的点地址表示,返 ...
- mysql inet_aton 原理_基于Mysql的IP处理函数inet_aton()与inet_ntoa()的深入分析_MySQL
bitsCN.com 有个统计需求,需要对IP进行分类统计,Mysql提供了inet_aton()和inet_ntoa()函数进程处理. 具体可以查看官方手册. INET_ATON(expr)给出一个 ...
- mysql inet aton ipv6_mysql 使用inet_aton和inet_ntoa处理ip地址数据
创建表 CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NUL ...
- MySQL inet aton函数_有个统计需求,需要对IP进行分类统计,Mysql提供了inet_aton()和inet_ntoa()函数进程处理。具体可以查看官方手册。INET_ATON(e...
有个统计需求,需要对IP进行分类统计,Mysql提供了inet_aton()和inet_ntoa()函数进程处理. 具体可以 INET_ATON(expr)给出一个作为字符串的网络地址的点地址表示,返 ...
- IP地址转换函数——inet_pton inet_ntop inet_aton inet_addr inet_ntoa
inet_pton NAME inet_pton - 将 IPv4 和 IPv6 地址从点分十进制转换为二进制 SYNOPSIS #include <arpa/inet.h>int ...
- inet_aton、inet_ntoa、inet_pton和inet_ntop
写在前面: inet_aton.inet_ntoa.inet_pton和inet_ntop都是用于IP地址与大端网络字节序二进制数字相互转换的函数 不同的是inet_aton和inet_ntoa只支持 ...
- Java中的MySQL函数的使用
MySQL中函数的使用 基本概念 字符串函数 char_length() length() concat() concat_ws() insert() upper() lower() left() r ...
- Java正则表达式--Matcher.group函数的用法
https://www.cnblogs.com/jiafuwei/p/6080984.html Java正则表达式--Matcher.group函数的用法 原来,group是针对()来说的,group ...
最新文章
- 反三角函数怎么表示_交流电的功率因数怎么算(里面有例子)
- java编写日期_Java常用日期操作
- c++实现二叉树操作
- Oracle EBS中的“客户”、客户地点、‘订单’之间的关系
- Linux chmod命令:修改文件或目录的权限
- 固态硬盘受损或数据删除,怎么办?详解各种恢复SSD数据方法
- dcp9020cdn硒鼓!错误_打印机硒鼓错误是什么意思?故障解决【详解】
- 商务与经济统计学 第五章案例题
- 2017济南北大青鸟accp和学士后课程的真实情况
- matlab如何求空间一点到直线距离,空间点到直线距离怎么求
- 如何抢到腾讯云校园1元优惠资格(新版腾讯云)-更新
- 边缘计算研究热点地图
- 永洪报表工具_2020年度10大BI工具排行榜
- [数学建模] 大数据建模五步法
- 2017年华东师范大学网络赛 A
- GWO灰狼优化算法python和matlab代码
- 综合评价的基本理论和数据预处理
- JavaScript <script>
- android 距离校准,通过距离校准设备提升WiFi定位精度的方法与流程
- Substance Painter 服饰材质制作 衣服 腰带
热门文章
- 用html做完整网页效果
- 4.计算机网络与信息安全
- ADI Blackfin DSP处理器-BF533的开发详解58:DSP控制ADXL345三轴加速度传感器的应用(含源码)
- R语言LR逻辑回归实例
- 小人物解决四大数学问题:记传奇华人数学家李天岩
- proteus里面没有stm32怎么办_STM32难不难,如何学习?这几点老司机建议,你得好好收藏!...
- 争取能让大家都能看懂的 DFA 算法
- 在mac上通过Homebrew安装redis
- Cadence Orcad Capture新建原理图Symbol及新建和添加元件库到工程的方法图文教程及视频演示
- 毕业相关——电网项目