IP地址转换成Long型数字的算法
在应用程序开发中,涉及到IP地址的存储,大部分开发人员都将其存为String(或文本类型)。能否将固定格式为m.n.x.y的IP地址转换成 Long型的数字呢?答案是肯定的。在数据库层面,可以直接将结果设置成表的主键,避免IP地址的重复,因为是主键,也就是表的索引了,数据库查找时会更 快。
对于格式为m.n.x.y的IP地址,转换成Long型数字的算法如下:
- Long = * 256 * 256 * m +
- y
使用Java语言,则这样实现:
- privatestatic);
- * * * Long.parseLong(ip[]) +
- * * Long.parseLong(ip[]) +
- * Long.parseLong(ip[]) +
- ]);
- return}
那么,对于已知的一个表示IP地址的Long型数字,又该如何将其还原成String(字符型)的IP地址呢?算法也很简单,整除和取余。使用Java语言,则这样实现:
- privatestaticlong;
- long * * );
- long * * * m - y) / ( * );
- long * * * m - * *n - y) / ;
- return + n + + x + + y;
- }
算法测试:
- publicstaticvoid);
- }
结果:
183.62.169.146
IP地址转换成Long型数字的算法的更多相关文章
- [转]字符型IP地址转换成数字IP的SQL函数
使用SQL函数可以实现许多的功能,下面为您介绍的是字符型IP地址转换成数字IP的SQL函数示例,供您参考,希望对您学习SQL函数能够有所帮助. /**//*--调用示例 sele ...
- 将ip地址转换成C段地址的UDF
将ip地址转换成C段地址的UDF,最重要的是判断IP地址的正则表达式. package cn.cnnic.ops.Study; import java.util.regex.Pattern; impo ...
- ip地址转换成16进制long
<span style="font-size:18px;">public class IpUtil { /** * ip地址转换成16进制long * @param i ...
- c#中将IP地址转换成无符号整形数的方法与逆变换方法
我们知道 IP地址就是给每个连接在Internet上的主机分配的一个32bit地址. 按照TCP/IP协议规定,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节.而c#中 ...
- python 将IP地址转换成打包后的32位格式
python 2.7 #!/usr/bin/env python # Python Network Programming Cookbook -- Chapter - # This program r ...
- ip地址转换
通常,我们用点分十进制字符串表示ipv4地址(192.168.1.1),用十六进制字符串表示ipv6地址(fe80::20c:29ff:fee9:4bcc). ipv4转换函数 #include &l ...
- python2.7_1.4_将IPV4地址转换成不同的格式
代码如下: # -*- coding: utf-8 -*- import socket from binascii import hexlify def convert_ip4_address(): ...
- 套接字编程相关函数(1:套接字地址结构、字节序转换、IP地址转换)
1. 套接字地址结构 1.1 IPv4套接字地址结构 IPv4套接字地址结构通常也称为“网际套接字地址结构”,它以sockaddr_in命名,定义在<netinet/in.h>头文件中.下 ...
- 华为上机:IP地址转换
IP地址转换 描述: IP地址的长度为32,即有2^32-1个地址.IP地址一般采用点分十进制表示法,例如"192.168.1.1".IP地址也可以直接用一个32位的整数进行表示. ...
随机推荐
- 优雅地使用CodeIgniter 3之Session类库(1)(转)
相信无数人在使用CI2的Session类库时,遇到各种的坑,各种抱怨,各种不解.在CI中国论坛能搜到大量关于Session类库的提问,说明要想用 好session类库还是得下一番功夫.本文将先从CI2 ...
- Android 从java字节码告诉你 为什么Handler会造成内存泄露
很多人面试的时候,都知道Handler 极易造成内存泄露,但是有一些讲不出来为什么,好一点的 会告诉你looper msg 之类的,但是你再往下问 为什么msg持有handler handler为什么 ...
- MSSQL常用操作及方法总结
1.在安装Sql或sp补丁的时候系统提示之前有挂起的安装操作,要求重启的解决办法: 到注册表中找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control ...
- AsciiDoc
AsciiDoc Text based document generation AsciiDoc Home Page Table of Contents Introduction Overview a ...
- Yii 显示错误信息(Fatal Error,Warning)在页面上
Yii由于设计上对于一些php奇怪问题的顾虑,并没有像cake,kohana一样把php错误信息打印在页面上. 遇到错误时,只是显示白页,这让没有经验的programmer会一头雾水. 实际上通常vh ...
- Locker
题意: 有2个数字串,每次可以变化1-3位(每位+1或-1(0-9,9-0)可循环),求由1串变到2串的最小用的次数. 分析: dp[i][num]表示变到第i位时最后两位组成的数是num时最小次数( ...
- Linux基本命令(7)文件阅读的命令
文件阅读的命令 命令 功能 head 查看文件的开头部分 tail 查看文件结尾的10行 less less是一个分页工具,它允许一页一页地(或一个屏幕一个屏幕地)查看信息 more more是一个分 ...
- Chapter12&Chapter13:程序实例
文本查询程序 要求:程序允许用户在一个给定文件中查询单词.查询结果是单词在文件中出现的次数及所在行的列表.如果一个单词在一行中出现多次,此行只列出一次. 对要求的分析: 1.读入文件,必须记住单词出现 ...
- C++抽象机制之二:运算符重载
1.二元运算符aa@bb,可以定义为 1).一个参数的非静态成员函数:aa.operator@(bb); (成员函数有this指针) 2). 两个参数的非成员函数:operator@(aa,bb); ...
- MyEclipse10导入工程jsp报错问题
好多时候,再用myecplise进行项目开发的时候,遇到导入工程的时候,工程内的jsp页面好多都报错.这是什么原因造成的呢? 我对于我遇到的问题及解决方法,跟大家分享一下. 我的Jsp页面报错的原 ...