Development

파이썬(Python) 기초 - 진법(進法) 변환하기(bin, oct, dec, hex)

주말만기다려·2017년 9월 2일·조회 30,487

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

댓글 0

로그인 후 댓글을 남길 수 있습니다.

아직 댓글이 없습니다.