IP地址与整形转换 java,python实现
2013-11-29 11:42
429 查看
java 版:
注意使用java进行转换时,由于int是有符号的,符号占去了最高位,故表达范围不足以表示ip地址。
还有就是
python的写法似乎简单了很多,借助socket和struct即可完成
参考文章:点击打开链接
如果是在数据库操作时需要做转换,那么数据库本身已经提供了相关的转换函数
例如My SQL : INET_ATON(XX) ..... INET_NTOA(XX)
注意使用java进行转换时,由于int是有符号的,符号占去了最高位,故表达范围不足以表示ip地址。
还有就是
public long transIP2Long(String ip) { if(ip.length()<8) return LENGTH_ILLEGAL_IP; long addr; long[] parts = new long[4];// all long ,in case of the number overflowed and become -,not +. try { String[] ipArr = ip.split("\\."); if(ipArr.length>4) throw new NumberFormatException(); parts[0] = (Integer.parseInt(ipArr[0]) & 0xFF); parts[1] = (Integer.parseInt(ipArr[1]) & 0xFF); parts[2] = (Integer.parseInt(ipArr[2]) & 0xFF); parts[3] = (Integer.parseInt(ipArr[3]) & 0xFF); } catch (NumberFormatException e) { //xxxxxxxxxxxxxx } addr = parts[3] & 0xFF; addr |= ((parts[2] << 8) & 0xFF00); addr |= ((parts[1] << 16) & 0xFF0000); addr |= ((parts[0] << 24) & 0xFF000000); return addr; }
python的写法似乎简单了很多,借助socket和struct即可完成
#!/usr/bin/python #int to ip,ip to int import socket import struct def int2ip(value): ip=socket.inet_ntoa(struct.pack('I',socket.htonl(value))) return ip def ip2int(ip): val = socket.ntohl(struct.unpack("I",socket.inet_aton(str(ip)))[0]) return val
参考文章:点击打开链接
如果是在数据库操作时需要做转换,那么数据库本身已经提供了相关的转换函数
例如My SQL : INET_ATON(XX) ..... INET_NTOA(XX)
相关文章推荐
- IP地址与整形的相互转换原理 (Python实现)
- python中实现将普通字典dict转换为java中的treeMap
- java实现ip地址与十进制数相互转换
- 两行Python代码实现IP地址与十进制整数互相转换
- Java实现IP地址字符串与整数之间的转换
- java里面InputStream类型转换成String类型怎么实现?
- java利用过滤器实现编码的转换,内容输出的替换
- flask+ highcharts实现报表转换成趋势图(3)----python使用csv像sql一样
- 2.6 Python里面如何实现tuple和list的转换?
- Python的dict实现原理及与Java的比较探究
- 在Python标准库的json包中,提供了JSONEncoder和JSONDecoder两个类来实现Json字符串和dict类型数据的互相转换。
- Learning Python -- Java 通过JyThon调用Python实现的规则
- java 实现 不限长整形字符串 相加
- python实现字符编码的转换
- [置顶] Python和Java的类型转换实例与分析
- 树和森林的相互转换的Java实现
- 利用JAXB实现java实体类和xml互相转换
- Python实现把数字转换成中文
- 【Python】简单例题tuple和list的转换;实现删除一个list里重复的元素;对list a进行排序,并且从最后一个开始删除重复元素