33 整數與ip位址間的轉換

2021-09-08 06:15:54 字數 1611 閱讀 3687

題目描述

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

乙個長整數。

舉例:乙個ip位址為10.0.3.193

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

10 00001010

0 00000000

3 00000011

193 11000001

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

的每段可以看成是乙個0-255的整數,需要對ip位址進行校驗

輸入描述:

輸入1 輸入ip位址

2 輸入10進製型的ip位址

輸出描述:

輸出1 輸出轉換成10進製的ip位址

2 輸出轉換後的ip位址

思路:進製之間轉換:

1)十進位制–》其他進製

bin(number)–>』0b…』

oct(number)–>』0o…』

hex(number)–>』0x…』

這裡的引數只能是整數,是int型,而後面轉換成的其他進製數是字串型別的,前面是』0』標誌(是數字0):bin(25)=』0b11001』;oct(25)=』0o31』; hex(25)=』0x19』

注意:整型–》字元型

2)其他進製–》十進位制

int(『0b…』,2)–>10進製資料

int(『0o…』,8)–>10進製資料

int(『0x…』,16)–>10進製資料

第乙個引數的標誌0b、0o、0x要與第二個引數對應起來

注意:字元型–》整型

3)非10進製型別之間轉換(以10進製為中間橋梁,但是要注意資料型別)

8進製=>16進製制《=》8進製=》10進製=》16進製制

hex(int(『0o162』,8))

16進製制=>2進製《

=》16進製制=》10進製=》2進製

bin(int(『0xf92』,16))

def encode(string):

ipadd=string.split('.')

add10=''

for each in ipadd:

newadd=str(bin(int(each))[2:]).rjust(8,'0')

add10+=newadd

print(int('0b'+add10,2))

def decode(string):

newstring=str(bin(int(string))[2:]).rjust(32,'0')

binstring=

result=

for i in range(4):

for each in binstring:

print('.'.join(result))

while true:

try:

string1=input()

encode(string1)

string2 = input()

decode(string2)

except:

break

整數與ip位址間的轉換

原理 ip位址的每段可以看成是乙個0 255的整數,把每段拆分成乙個二進位制形式組合起來,然後把這個二進位制數轉變成 乙個長整數。舉例 乙個ip位址為10.0.3.193 每段數字 相對應的二進位制數 10 00001010 0 00000000 3 00000011 193 11000001 組合...

整數與IP位址間的轉換

原理 ip位址的每段可以看成是乙個0 255的整數,把每段拆分成乙個二進位制形式組合起來,然後把這個二進位制數轉變成 乙個長整數。舉例 乙個ip位址為10.0.3.193 每段數字 相對應的二進位制數 10 00001010 0 00000000 3 00000011 193 11000001 組合...

整數與IP位址間的轉換

題目 乙個長整數。每段數字 相對應的二進位制數 10 00001010 0 00000000 3 00000011 193 11000001 本題含有多組輸入用例,每組用例需要你將乙個ip位址轉換為整數 將乙個整數轉換為ip位址 while true try str1 10.0.3.193 spli...