tifa2018 发表于 2020-4-9 16:58:56

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

# 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) * 256 ** (3 - i)
   return result


这里的result = result + int(ip_list) * 256 ** (3 - i)怎么理解?

qiuyouzhi 发表于 2020-4-9 17:01:37

你打印一下看看呗

tifa2018 发表于 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 = ?

wp231957 发表于 2020-4-9 18:32:58

本帖最后由 wp231957 于 2020-4-9 18:35 编辑

tifa2018 发表于 2020-4-9 17:10
我就是不理解这里
题目是这样的



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

00000192 00000000 00000000 00000000=11000000 00000000 00000000 00000000=1*2^31+1*2^30=3221225472

00000000 00000168 00000000 00000000=00000000 10101000 00000000 00000000=1*2^23+1*2^21+1*2^19=11010048

00000000 00000000 00000001 00000000=00000000 00000000 00000001 00000000=1*2^8=256

00000000 00000000 00000000 00000001=00000000 00000000 00000000 00000001=1

3221225472+11010048+256+1=3,232,235,777(192.168.1.1)

xugdawn 发表于 2020-4-9 19:32:49

我觉得吧,result就相当于个变量,先有个初值为0,然后result= ...就得到个新值,再继续执行, ... =result...这个result就变成了上一次得到的那个值,然后result=....又得到了个新值,就这样循环,直到for把0,1,2,3都遍历完跳出来
哈哈哈哈我也是小白,一点拙见
页: [1]
查看完整版本: 问下result = result + int(ip_list[i]) * 256 ** (3 - i)这句怎么理解?