天天看點

【機試題(實作語言:python3)】整數與ip位址間的轉換

題目描述

原理:ip位址的每段可以看成是一個0-255的整數,把每段拆分成一個二進制形式組合起來,然後把這個二進制數轉變成

一個長整數。

舉例:一個ip位址為10.0.3.193

每段數字 相對應的二進制數

10 00001010

0 00000000

3 00000011

193 11000001

組合起來即為:00001010 00000000 00000011 11000001,轉換為10進制數就是:167773121,即該IP位址轉換後的數字就是它了。

本題含有多組輸入用例,每組用例需要你将一個ip位址轉換為整數、将一個整數轉換為ip位址。

輸入描述:

輸入

1 輸入IP位址
2 輸入10進制型的IP位址
           

輸出描述:

輸出

1 輸出轉換成10進制的IP位址
2 輸出轉換後的IP位址
           

示例1

輸入

10.0.3.193
167969729
           

輸出

167773121
10.3.3.193
           

代碼實作如下:

def func():
    while True:
        try:
            ip = list(map(int,input().split('.')))
            n = int(input())
            res = ''
            for i in ip:
                v = '{:b}'.format(i)
                v = v.rjust(8,'0')
                res +=v
            res = int(res,2)
            print(res)
            v = '{:b}'.format(n)
            v = v.rjust(32,'0')
            res = []
            for i in range(0,len(v)-7,8):
                a = int(v[i:i+8],2)
                res.append(str(a))
            print('.'.join(res))
        except Exception as e:
            #print(e)
            break
if __name__ == '__main__':
    func()