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