java把ip地址存放到一个int型变量
package com.zwx; public class test { public static void main(String[] args) { byte[] bt = new byte[4]; bt[0] = 111; bt[1] = 112; bt[2] = 113; bt[3] = 114; int i = byteArrayToInt(bt); System.out.println("int--->" + i); byte[] b = intToByteArrayl(i); System.out.print("ip--->"); for (byte bb : b) { System.out.print(bb + "."); } } //int转ip(字节数组) public static byte[] intToByteArrayl(int i) { byte[] result = new byte[4]; result[0] = (byte)((i >> 24) & 0xFF); result[1] = (byte)((i >> 16) & 0xFF); result[2] = (byte)((i >> 8) & 0xFF); result[3] = (byte)(i & 0xFF); return result; } //ip(字节数组)转int public static int byteArrayToInt(byte[] b) { int value = 0; for (int i = 0; i < 4; i++) { value |= b[i]; if ( i < 3 ) { value = value << 8; } } return value; } }
运行结果:
int--->1869640050
ip--->111.112.113.114.
------------------------补充---------------------------
考虑到1楼提出的byte的范围为-128-127,而IP有可能是192.168.1.1,也就是说java都是有符号的,我们可以把有符号的变成无符号的,也就是-1就相当于255,其实如果是用c就简单多了,直接unsigned就可以了,c在这些方面确实比较强大,一篇很不错的原码, 反码和补码的文章:http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html
修正后的代码:
package com.zwx; public class test { public static void main(String[] args) { byte[] bt = new byte[4]; bt[0] = (byte)192; bt[1] = (byte)128; bt[2] = 1; bt[3] = (byte)255; //相当于 bt[3] = -1; int i = byteArrayToInt(bt); System.out.println("int--->" + i); byte[] b = intToByteArrayl(i); System.out.print("ip--->"); for (byte bb : b) { System.out.print(Byte.toUnsignedInt(bb) + "."); //或者:System.out.print((bb & 0xFF) + "."); } } //int转ip(字节数组) public static byte[] intToByteArrayl(int i) { byte[] result = new byte[4]; result[0] = (byte)((i >> 24) & 0xFF); result[1] = (byte)((i >> 16) & 0xFF); result[2] = (byte)((i >> 8) & 0xFF); result[3] = (byte)(i & 0xFF); return result; } //ip(字节数组)转int public static int byteArrayToInt(byte[] b) { int value = 0; for (int i = 0; i < 4; i++) { value |= (b[i] & 0xFF); if ( i < 3 ) { value = value << 8; } //System.out.println(Integer.toBinaryString(value)); } return value; } }
修正后运行结果:
int--->-1065352705
ip--->192.128.1.255.
相关推荐
前段时间帮朋友写的一个程序用到的,c++实现的将ip地址转换成四个int型,便于处理。
Java ip 地址排序Java ip 地址排序Java ip 地址排序Java ip 地址排序
主要介绍了使用Java代码将IP地址转换为int类型的方法,这也是各大计算机考试和ACM以及面试的常见基础问题,需要的朋友可以参考下
主要介绍了java实现根据ip地址获取地理位置的代码分享,本文中使用的是QQ在线接口,也可以使用新浪、淘宝等提供的在线接口,需要的朋友可以参考下
NULL 博文链接:https://fanshuyao.iteye.com/blog/2436489
java 获取计算机名与IP地址 java 获取计算机名与IP地址 java 获取计算机名与IP地址
ip查询归属地收藏 Java 查询IP地址
根据Ip地址获取归属地,需要用到ip库,我这里用到的是QQWry.dat
IP地址转换成Int64
java根据ip获取国家、地区名称,附带ip地址库
mask是一个数值,代表子网掩码连续1的个数;ip_addr是要测试的ip地址。 例如,要测试的IP地址为202.113.16.10,子网号为202.113.16.0,子网掩码为255.255.255.0 2)判断subnet和ip_addr的合法性(注意考虑全面,...
使用时只需要把唯一工具类:IpLocationTool.java(无其它依赖包)引入,并把qqwry.dat文件放到src根路径下即可。 附件清单: IpLocationTool.java(主工具类) Test.java(测试Demo) qqwry.dat(数据文件,可...
java 获取IP地址 ...............................................................................
java正则表达式验证IP地址
通过输入的ip地址,读取纯真ip数据库,获取该IP地址所在地区
总共才几行代码,很简易的一个用来获取ip地址的软件
java读取纯真IP地址数据库 使用java读取纯真ip数据库,里面带一个最近更新的ip库,想要最新的,可以拿名字百度
本类测试java通过ip地址返回ip所在地测试类源码。
Java获取客户端真实IP地址
IP地址格式输入,JAVA编写,之前写了个比较繁琐,这里写了个简洁的,只有一个java文件。