題目描述
原理: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...