題目:
乙個長整數。
每段數字 相對應的二進位制數
10 00001010
0 00000000
3 00000011
193 11000001
本題含有多組輸入用例,每組用例需要你將乙個ip位址轉換為整數、將乙個整數轉換為ip位址
**:
while true :
try:
#str1 = '10.0.3.193'.split('.')
str1 = input().split('.') #輸入ip位址,並用'.'進行分割
str2 = str(bin(int(input()))).split('b')[-1] #輸入轉換後的ip位址,將其轉換成二進位制
list1 =
for i in str1: #將每一段ip位址中的數字轉換成二進位制
erjizhi = str(bin(int(i))).split('b')[-1]
#print(erjizhi)
if len(erjizhi) <= 8: #判斷每乙個二進位制字長是否為8,小於8的話用0進行填充
erjizhi = '0' * (8 - len(erjizhi)) + erjizhi
#print(erjizhi)
#print(''.join(list1))
print(int(''.join(list1),2)) #對lsit1中的元素進行拼接
dic1 = {} #生成乙個空字典
#print(str2)
# str1 = '1010000000110000001111000001'
if len(str2) < 32: #判斷轉換後的ip位址轉換成二進位制後,字長是否小於32, 因為有效個的ip分為4段,每一段轉換為8位的二進位制的話,最大是8*4=32位元組長
str2 = '0' * (32 - len(str2)) + str2 #不滿足的話用0進行填充,就得到了32字長的二進位制數字
#print(str2)
len1 = int(len(str2) / 8) #把32字長的二進位制數字進行切割,使其每一段長度為8,分割成4分。
# print(len1)
# print(type(len1))
for i in range(0, len1):
dic1[i] = str2[8 * (i):8 * (i + 1)]
# print(dic1)
# print(int('11000001', 2))
for key in dic1.keys(): #將分割的4段二進位制存在dic1字典中,並轉換成10進製。
dic1[key] = int(dic1[key], 2)
#print(dic1)
res =
for value in dic1.values(): #將轉換成4段十進位制的數字新增到res列表中去
print('.'.join(res)) #使用「.」對4個二進位制熟悉進行拼接,並列印出來
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 組合...
C C 整數與IP位址間的轉換
原理 ip位址的每段可以看成是乙個0 255的整數,把每段拆分成乙個二進位制形式組合起來,然後把這個二進位制數轉變成 乙個長整數。舉例 乙個ip位址為10.0.3.193 每段數字 相對應的二進位制數 10 00001010 0 00000000 3 00000011 193 11000001 組合...