What/Where/Why:一般我们在论坛bbs上经常会看到一些封号的。情节严重的,版主会封锁该用户的所在地区的ip,使之无法登录,也会看到一些bbs的签名上有显示你当前用户所在地ip以及地区信息的,这个技术一般就是用在这里。而我主要用在一个投票的小模块中,用于判断该用户ip是否进行重复投票的时候使用,这里我只提供了一个工具类代码,而地区ip段我没有搜集,以后有时间了再整理。
How:一个用户的ip,类似于”221.8.65.74”,而一般我们在java中存储于数据库,并不是把这个值当作字符串存储,是当作long类型存储。如何转化long类型呢,这里就应该介绍下ip地区段位的说法。
在互联网中,各用户都是通过ip来区分的,不同地区的ip有它们自己的ip区间,我们可以把用户ip比喻为电话号码,而区间,则表示电话号码中的区号,比如上面所说的”221.8.65.74”ip,它是属于吉林省的,因为吉林省的ip段是3 708 289 023 到 3 708 420 094,一个ip地址是由4个段位组成,分别用“.”来区分,而区间号呢,则是ip转化为整数后的一个整数区间,上面的地址,转化为整数后是“3 708 305 738”,它在吉林省的区间段,所以属于吉林,下面就介绍如何转化为整数。
这里的转化,我们就需要用到位移运算来解释了,我们需要把ip地址中的每个段位转化为8位的二进制数,不足8位的,要用0来补足,然后依次把这4个段位依次首尾相连,得到一个新的二进制数,然后把这个二进制数转化为十进制数,即可。举例:221.8.65.74,括号内为对应的二进制,分为221(11011101)、8(00001000)、65(01000001)、74(01001010),然后首尾相连得到11011101 00001000 01000001 01001010,转化为十进制后得到3 708 305 738。用代码表示:
public static long getIpNum(String ip){
long ipNum = 0;
if(ip != null && ip.trim().length() != 0){
String [] subips = ip.split("\\.");
for(String str : subips){
//向左移8位
ipNum = ipNum << 8;
ipNum += Integer.parseInt(str);
}
}
return ipNum;
}
总结:这个转化是在一本书上看的,感觉以后应该有用,记下备忘,代码的实现比较简单,没多大的技术含量,主要还是理解它的生成方式。各省的段位区间在网上貌似有数据,暂时没有收集,等什么时候有时间了整理后再补上。
分享到:
相关推荐
3. 对于整数转IP地址的函数,可以先将整数分割成四部分,再将每部分转换为十进制字符串,最后拼接成IP地址字符串。 在易语言源码中,可以使用“字符串分割”命令来分离IP地址,使用“整数到十进制字符串”和“十...
IP地址转换成整数,整数转换成IP地址,16进制转换成IP地址,IP地址转换成16进制
有时候我们用数据库存储ip地址时可以将ip地址转换成整数存储,整数占用空间小,索引也会比较方便,下面的python代码自定义了一个ip转换成整数的函数,非常简单,代码同时还提供了整数转换成ip地址的方法。...
本文将围绕“易语言IP文本整数互转”这一主题,详细阐述IP地址的文本与整数之间的转换,并介绍相关的易语言函数,如IPToInt、IntToIP以及IPOffset。 首先,IP地址是由4个8位二进制数组成的,通常以点分十进制的形式...
下面我们就来看一下把 IPv4 地址转换成整数的原理和收益各是什么。 转换的原理 一个 IPv4 类的地址共分为四个部分 0.0.0.0 然而每一个部分的取值范围都在 0 ~ 255;也就是说每一个部分都可以用一个字节来保存,总共...
一个简单的Python脚本,它包含了将点分十进制IP地址转换为32位整数(通常称为IPv4地址的整数表示)和进行简单的IP地址校一个简单的Python脚本,它包含了将点分十进制IP地址转换为32位整数(通常称为IPv4地址的整数...
易语言IP地址转换源码,IP地址转换,查询IP到地址,二分法确定位置,取地区文本,IP文本转整数值,十六进制到十进制,倒转十六进制文本,IP文本补位,十六进制文本到IP地址,十六进制单项补位,获得数据库数据数量,获得数据库...
IP地址与整数之间的转换是网络编程中常见的操作之一,主要用于内部处理IP地址的方式转换,比如在网络路由、存储、比较时,使用整数形式可以提高效率。在***开发中,我们可以通过C#语言来实现IP地址与整数之间的相互...
#### IP地址转整数的算法原理 以IPv4地址为例,假设一个IP地址为`x.y.z.m`,其中`x, y, z, m`均为0至255之间的十进制数。按照换算公式: ``` int i = 16777216 * x + 65536 * y + 256 * z + m; ``` 例如,对于IP...
本文将详细探讨易语言中如何将IP地址转换为长整数,以及这个过程中的关键知识点。 易语言是一种中国本土开发的、面向对象的、中文编程语言,它的设计目标是降低编程的难度,让编程变得更加直观易懂。在易语言中处理...
#### 整数转IP地址(NumberToIP) **功能描述:** 该方法用于将整数表示的IP地址转换回IPv4地址字符串形式。通过对整数进行除法和取余操作,可以还原出IPv4地址的各个组成部分。 **代码实现:** ```csharp /// ...
- IP字符串解析函数,用于将点分十进制的IP地址分解为整数数组。 - 二进制IP地址的拼接函数,将四个整数转换回点分十进制表示。 - IPv4与IPv6之间的转换函数,可能涉及到地址的扩展或缩减,以及特殊格式的处理。 - ...
要将IP地址转换为32位整型数字,可以将IP地址的每个八位段转换为整数,然后将它们组合在一起。以下是一个简单的Delphi函数实现: ```delphi function IPToLong(const IPAddress: string): Cardinal; var Octets: ...
本文将详细解析"IP地址转换整形工具"及其相关知识点,旨在帮助用户理解和掌握IP地址与整数之间的转换技巧。 首先,我们要明白IP地址(Internet Protocol Address)是由32位二进制组成的,通常以点分十进制的形式...
总结来说,C++中将IP地址转换为四个int型主要是通过字符串操作和整数转换实现的。了解这些基本的编程技巧,能够帮助我们在处理IP地址时更加得心应手。同时,随着技术的发展,如C++11及更高版本提供的新特性,如`std:...
在IT行业中,IP地址转向(也称为IP重定向或IP绑定)是一种网络技术,它允许服务器根据客户端IP地址的不同来返回不同的响应。这种技术在多种场景下被广泛使用,例如地理定位服务、负载均衡和安全策略实施等。在这个...
同时,从长整数回转到IP地址也是必要的,这通常通过取模和除法操作来完成,将长整数分解为四个0-255的整数部分。 易语言提供了丰富的内置函数和组件,使得这类转换操作变得相对简单,即使对于没有深厚编程基础的...
IP地址与整数互相转换类,支持互互转。 当然,必然提供正确的Ip地址及整数信息。 整数建议字段选用bigint
点分十进制IP和长整型转换,直接把IP地址转换为整型,存数据库增加效率。