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