继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

IP地址与整数之间的互相转换详解

Oraclea
关注TA
已关注
手记 88
粉丝 37
获赞 353

IP地址的“构造”是由32位二进制数组成的。
IP地址转换为整数的代码:
IPAddressTurnLong
或者:
数组方式
优化如下:
for方式
分析:IP地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成一个长整数。
举例:一个IP地址为10.0.27.105
detail
组合起来即为:00001010 00000000 00011011 01101001,转换为10进制数就是:167779177,即该IP地址转换后的数字就是它了。
在上面的方法中,原理都是一样的。因为它就是操作的二进制数,使用位移操作很方面、直观。按位操作符都操作的整数的二进制数。
Long.parseLong(token.nextToken())<<24 就是把第一段数字表示的二进制数左移了24位,
得到00001010 00000000 00000000 00000000;
依次类推:
Long.parseLong(token.nextToken())<<16,
得到00000000 00000000 00000000 00000000;
Long.parseLong(token.nextToken())<<8,
得到00000000 00000000 00011011 00000000;
Long.parseLong(token.nextToken()),最低位不用移动,
得到00000000 00000000 00000000 01101001;
把这四个二进制数转换为整数后相加(结果为:167779177)和00001010 00000000 00011011 01101001表示的二进制数是一样的。
整数转换为IP地址的代码:
LongTurnIPAddress

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP