鱼C论坛

 找回密码
 立即注册
查看: 635|回复: 4

[已解决]问下result = result + int(ip_list[i]) * 256 ** (3 - i)这句怎么理解?

[复制链接]
发表于 2020-4-9 16:58:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
# transfer ip to int
def ip2long(ip):
   ip_list = ip.split('.')
   result = 0
   for i in range(4):  # 0,1,2,3
      result = result + int(ip_list[i]) * 256 ** (3 - i)
   return result

这里的result = result + int(ip_list[i]) * 256 ** (3 - i)怎么理解?
最佳答案
2020-4-9 18:32:58
本帖最后由 wp231957 于 2020-4-9 18:35 编辑
tifa2018 发表于 2020-4-9 17:10
我就是不理解这里
题目是这样的


挺好玩的,你自己看一下:

[str]00000192 00000000 00000000 00000000=[bin]11000000 00000000 00000000 00000000=[int]1*2^31+1*2^30=3221225472

[str]00000000 00000168 00000000 00000000=[bin]00000000 10101000 00000000 00000000=[int]1*2^23+1*2^21+1*2^19=11010048

[str]00000000 00000000 00000001 00000000=[bin]00000000 00000000 00000001 00000000=[int]1*2^8=256

[str]00000000 00000000 00000000 00000001=[bin]00000000 00000000 00000000 00000001=[int]1

3221225472+11010048+256+1=3,232,235,777(192.168.1.1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-9 17:01:37 | 显示全部楼层
你打印一下看看呗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-9 17:10:24 | 显示全部楼层
qiuyouzhi 发表于 2020-4-9 17:01
你打印一下看看呗

我就是不理解
int(ip_list) * 256 ** (3 - i)
这里
题目是这样的

如 10.3.9.12 转换规则为:
        10            00001010
         3            00000011
         9            00001001
        12            00001100
再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-9 18:32:58 | 显示全部楼层    本楼为最佳答案   
本帖最后由 wp231957 于 2020-4-9 18:35 编辑
tifa2018 发表于 2020-4-9 17:10
我就是不理解这里
题目是这样的


挺好玩的,你自己看一下:

[str]00000192 00000000 00000000 00000000=[bin]11000000 00000000 00000000 00000000=[int]1*2^31+1*2^30=3221225472

[str]00000000 00000168 00000000 00000000=[bin]00000000 10101000 00000000 00000000=[int]1*2^23+1*2^21+1*2^19=11010048

[str]00000000 00000000 00000001 00000000=[bin]00000000 00000000 00000001 00000000=[int]1*2^8=256

[str]00000000 00000000 00000000 00000001=[bin]00000000 00000000 00000000 00000001=[int]1

3221225472+11010048+256+1=3,232,235,777(192.168.1.1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-9 19:32:49 | 显示全部楼层
我觉得吧,result就相当于个变量,先有个初值为0,然后result= ...就得到个新值,再继续执行, ... =result...这个result就变成了上一次得到的那个值,然后result=....又得到了个新值,就这样循环,直到for把0,1,2,3都遍历完跳出来
哈哈哈哈我也是小白,一点拙见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 05:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表