ip-int-byte[]互转-使用java原生api
2016-05-11 11:13
627 查看
近来需要存储ip,看网上的代码都是long类型的,占用空间过大,直接查看了jdk的源码,发现自带了这些功能,废话不多说,直接上代码,自己看
import java.net.InetAddress; import java.net.UnknownHostException; public class IpV4Util { /** * 将ip转为int * @param ip * @return int可能为负数 * @throws UnknownHostException */ public static int ipToInt(String ip) throws UnknownHostException { byte[] addr = ipToBytes(ip); //reference java.net.Inet4Address.Inet4Address int address = addr[3] & 0xFF; address |= ((addr[2] << 8) & 0xFF00); address |= ((addr[1] << 16) & 0xFF0000); address |= ((addr[0] << 24) & 0xFF000000); return address; } /** * 将ip转为int * @param ip * @return xxx.xxx.xxx.xxx */ public static String intToIp(int ip) { byte[] addr = new byte[4]; addr[0] = (byte) ((ip >>> 24) & 0xFF); addr[1] = (byte) ((ip >>> 16) & 0xFF); addr[2] = (byte) ((ip >>> 8) & 0xFF); addr[3] = (byte) (ip & 0xFF); return bytesToIp(addr); } /** * 将byte数组转为ip字符串 * @param src * @return xxx.xxx.xxx.xxx */ public static String bytesToIp(byte[] src) { return (src[0] & 0xff) + "." + (src[1] & 0xff) + "." + (src[2] & 0xff) + "." + (src[3] & 0xff); } /** * 将ip字符串转为byte数组,注意:ip不可以是域名,否则会进行域名解析 * @param ip * @return byte[] * @throws UnknownHostException */ public static byte[] ipToBytes(String ip) throws UnknownHostException { return InetAddress.getByName(ip).getAddress(); } public static void main(String[] args) throws UnknownHostException { String ip = "255.255.255.123"; int ipI = ipToInt(ip); System.out.println(ip+"->"+ipI); System.out.println(ipI+"->"+intToIp(ipI)); byte[] bytes = ipToBytes(ip); System.out.println(ip+"->bytes.length="+bytes.length); System.out.println("bytes->"+bytesToIp(bytes)); } } 输出结果: 255.255.255.123->-133 -133->255.255.255.123 255.255.255.123->bytes.length=4 bytes->255.255.255.123
相关文章推荐
- Java不写文件,LOAD DATA LOCAL INFILE大批量导入数据到MySQL的实现
- java web 虚拟主机配置
- Spring 源码阅读–beans-(1)
- java实现base64编码和解码
- Java类的初始化
- java File类
- Spring核心技术(二)——Spring的依赖及其注入
- Spring 核心技术IoC容器(二)
- 重构二叉树(Java实现)
- Java字符串格式化:数字前面加0
- spring的orm模块
- spring定时器配置
- 软件测试上机实验(一)
- java 练习-接收键盘输入的数据并输出
- java中set接口的用法
- java的System.getProperty()方法可以获取的值
- Eclipse快捷键
- 【第六章】 AOP 之 6.2 AOP的HelloWorld ——跟我学spring3
- 深入理解Java的接口和抽象类
- Eclipse下mybatis配置文件自动提示