python百例 --- ip地址與10進制的轉換


1 - ip地址與10進制數的轉換

  • 當我們ping數字2130706433時,從127.0.0.1返回結果。

  • IP地址是個32位的二進制數,表示成點分10進制,只是為了方便,如果把這32為二進制數轉換成10進制數,計算機也是認識的。

  • 2130706433(10進制)== 1111111000000000000000000000001(二進制)

  • 為了更好的學習使用Python,那就編寫一個將10進制數轉成2進制的代碼吧。

    • 思路:

      1. 仔細分析,IP地址的四個10進制數,實際上就是256進制

      2. 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 + 1if __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)) 

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM