이번 포스팅에서는 파이썬에서 정수 값을 다른 진법으로 간단히 보는 방법을 알아 보도록 하려고 합니다.
값을 다른 진법으로 전환하는 방법이나 알고리즘은 여러 가지가 있지만 이 포스팅에서는 파이썬에 기본적으로 있는 함수와 심플한 진법 변환 구현 코드를 사용해 출력하도록 하겠습니다.
우선, 파이썬에서 각각의 변수나 값을 출력해보는 방법은 print함수를 사용하는 것인데요, 자세한 사용법은 추후에 다른 포스팅에서 언급하도록 하겠습니다.
print의 간단한 사용법을 간략히 알려드리면
변수 = 1
variable = 2
print(변수)
print(variable)
print(변수, variable)
print(3)
print(1.01)
의 형식으로 빠르게 변수나 값을 출력해 보실 수 있는데, 이때 숫자 값의 경우에는 기본적으로 흔히 일상에서 쓰이는 10진수 형식의 값으로 출력을 합니다.
하지만 컴퓨터 프로그래밍을 하다 보면 10진수외에 다른 진법을 사용해 값을 변환해 줄 필요가 생깁니다.
이때 파이썬에서는 10진수의 정수값을 2진수,8진수,16진수의 문자열로 쉽게 바꿔주는 함수가 있는데 바로 bin,oct,hex 함수입니다.
값 = 123
print("10진수 값:",값)
print("2진수 값:",bin(값))
print("8진수 값:",oct(값))
print("16진수 값:",hex(값))
위의 사진 처럼 빠르게 파이썬에 있는 기본 함수로 확인해 볼 수 있었습니다.
이때 bin,oct,hex 함수는 정수 값을 문자열로 변환해 값을 반환해줍니다.
따라서 0b,0o,0x는 표현되는 값이 각각 2진수,8진수,16진수임을 의미하기 때문에, 그 다음부터 표현되는 값이 각각의 변환된 값이 됩니다
추가적으로 endian이나 2의 보수,여러 복잡도를 생각하지 않고 2~16진수까지 변환할 수 있는 심플한 n진법 변환 코드를 작성해보면 아래와 같습니다.
def simpleRadixConvert(int_value:int,radix:int = 10) -> str:
assert type(int_value) is int,"Unsupported data type"
assert type(radix) is int,"Unsupported radix type"
assert 1<radix<=16,"Unsupported radix"
if(int_value<0):
return "-"+simpleRadixConvert(abs(int_value),radix=radix)
else:
repr_strings = [format(i,"x") for i in range(0,16)]
result = []
while(True):
if(int_value<radix):
result.append(repr_strings[int_value])
break
else:
mod = (int_value%radix)
result.append(repr_strings[mod])
int_value //= radix
return "".join(list(reversed(result)))
def main():
값들 = [123,-321]
for 값 in 값들:
print(값,": ")
for r in range(2,16+1):
print("\t",r,"진수 값: ",simpleRadixConvert(값,radix=r))
if(__name__=="__main__"):
main()
'Program Languages > Python' 카테고리의 다른 글
파이썬 print 함수로 문자 출력하기 (4) | 2022.12.23 |
---|---|
파이썬 주석 사용법 (2) | 2022.12.22 |
파이썬 자료형(Data type) (0) | 2022.12.20 |
Python 소스코드에서 설치하는 방법 (0) | 2022.12.19 |
Python 설치 방법 (0) | 2022.12.15 |