1. 2,8,16진법을 10진법으로 변환하기
a1=int('aa',16) a2=int('56',8) a3=int('10',2) print(a1) print(a2) print(a3)
< 결과 >
170 46 2
2. 10진법을 2진법으로 변환하기
a1=bin(30) a2=bin(15) a3=bin(10) print(a1) print(a2) print(a3)
< 결과 >
0b11110 0b1111 0b1010
3. 10진법을 2진법으로 변환하는데 앞에 0b 제거하기
myNumber=[10,20,30,40,50] for n in myNumber: print(bin(n)[2:])
< 결과 >
1010 10100 11110 101000 110010
4. 10진법을 8진법으로 변환하기
myNumber=[10,20,30,40,50] for n in myNumber: print(oct(n))
< 결과 >
012 024 036 050 062
5. 10진법을 16진법으로 변환하기
myNumber=[10,20,30,40,50] for n in myNumber: print(hex(n))
< 결과 >
0xa 0x14 0x1e 0x28 0x32
6. 진법 변환 함수 만들기
def conv(number,base): T="0123456789ABCDEF" i,j=divmod(number,base) if i==0: return T[j] else: return conv(i,base)+T[j] myNumber=[10,100,500] for n in myNumber: print("%d to bin => %s" % (n, conv(n,2))) print("%d to oct => %s" % (n, conv(n,8))) print("%d to hex => %s" % (n, conv(n,16)))
< 결과 >
10 to bin => 1010 10 to oct => 12 10 to hex => A 100 to bin => 1100100 100 to oct => 144 100 to hex => 64 500 to bin => 111110100 500 to oct => 764 500 to hex => 1F4
7. 진법 변환기
number=input("Your Number: ") base=int(input("Your Base: ")) try: if base==16 or base==10 or base==8 or base==2: dap=int(number, base) print("To Dec: ",dap) print("To Hex: ",hex(dap)) print("To Oct: ",oct(dap)) print("To Bin: ",bin(dap)) else: print("not supported") except ValueError: print("value not supported")
결과
Your Number: 23 Your Base: 8 To Dec: 19 To Hex: 0x13 To Oct: 0o23 To Bin: 0b10011
8. IP Address를 2진법으로 변환
yourIpAddress=input("IP Address : ") ips=yourIpAddress.split('.') binIpAddressList=[] for ip in ips: binIpAddressList.append(bin(int(ip))) newIpAddress='' for nip in binIpAddressList: newIpAddress+=nip[2:].zfill(8) newIpAddress+='.' newIpAddress=newIpAddress[:-1] print("New Ip Address :",newIpAddress)
< 결과 >
IP Address : 192.168.50.123 New Ip Address : 11000000.10101000.00110010.01111011