HJ_33 整数与IP地址间的转换_模拟
思路:模拟分析
知识点:
1、10进制与二进制互相转换
2、字符串切片
代码行数不算多,但依然有简化空间。参考高赞题解的思路,得到代码2。
#采用内置函数int(x,base)把任何进制转换成10进制
#bin(x) 把int,十进制整型转换成二进制。
1 ip=list(map(int,input().split('.'))) 2 #ip=list(map(int,'66.72.41.66'.split('.'))) 3 def tran_to_binary(item): 4 s='' 5 for i in range(8): 6 s+=str(item%2) 7 item=item//2 8 #print(s) 9 return s[::-1] 10 s1='' 11 for item in ip: 12 s1+=tran_to_binary(item) 13 sum=0 14 for k,i in enumerate(s1[::-1]): 15 sum+=int(i)*2**k 16 print(sum) 17 ten=int(input()) 18 #ten=299867972 19 s='' 20 while ten>0: 21 s+=str(ten%2) 22 ten=ten//2 23 out=[] 24 for j in [s[:8],s[8:16],s[16:24],s[24:]]: 25 sum=0 26 27 for k,i in enumerate(j): 28 sum+=int(i)*2**k 29 out.append(sum) 30 print(".".join(list(map(str,out[::-1]))))
1 ip = list(map(int,input().split('.'))) 2 s='' 3 for i in ip: 4 b='0'*(8-len(str(bin(i)[2:])))+str(bin(i)[2:]) 5 s+=b 6 print(int(s,2)) 7 8 ten=int(input()) 9 a=bin(ten)[2:][::-1] 10 b=[] 11 for i in range(4): 12 b.append(int(a[8*i:8*i+8][::-1],2)) 13 print(".".join(list(map(str,b[::-1]))))