python百例 --- ip地址与10进制的转换
Posted 腿别抖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python百例 --- ip地址与10进制的转换相关的知识,希望对你有一定的参考价值。
-
当我们ping数字2130706433时,从127.0.0.1返回结果。
-
IP地址是个32位的二进制数,表示成点分10进制,只是为了方便,如果把这32为二进制数转换成10进制数,计算机也是认识的。
-
2130706433(10进制)== 1111111000000000000000000000001(二进制)
-
为了更好的学习使用Python,那就编写一个将10进制数转成2进制的代码吧。
-
思路:
-
仔细分析,IP地址的四个10进制数,实际上就是256进制
-
10进制数除以256,余数就是IP地址右侧的数字,商继续除256即可
>>> divmod(2130706433,256) (8323072, 1) # 1 >>> divmod(8323072,256) (32512, 0) # 0 >>> divmod(32512,256) (127, 0) # 0 >>> divmod(127,256) (0, 127) # 127 127.0.0.1
-
-
-
具体代码如下:
#!/usr/local/bin/python3 def int2ip(digit): result = [] for i in range(4): digit, mod = divmod(digit, 256) result.insert(0,mod) return ‘.‘.join(map(str,result)) if __name__ == ‘__main__‘: print(int2ip(2130706433))
-
匿名函数和map的使用方法和介绍
#!/usr/local/bin/python3 from random import randint ? def func(x): return x * 2 + 1 ? if __name__ == ‘__main__‘: alist = [randint(1,100) for i in range(10)] print(alist) # map将第二个参数中的每一项交给func函数进行加工,保留加工后的结果 result = map(func, alist) # 使用一个常规函数最为参数 result2 = map(lambda x: x * 2 + 1, alist) # 使用匿名函数作为参数 print(list(result)) print(list(result2))
以上是关于python百例 --- ip地址与10进制的转换的主要内容,如果未能解决你的问题,请参考以下文章