-
當我們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))