파이썬 hex() 사용법 5가지

파이썬 hex() 함수는 이러한 16진수를 쉽게 변환하고 활용할 수 있게 해주는 강력한 도구입니다. 파이썬에서 숫자를 다양한 방식으로 표현하는 기능은 프로그래밍에서 매우 유용합니다. 그중에서도 16진수는 컴퓨터 내부에서 데이터를 처리할 때 자주 사용되는 중요한 개념입니다. 이번 포스팅에서는 hex() 함수의 사용법과 그 응용 방법에 대해 쉽게 설명해 보겠습니다.

파이썬 hex() 함수란?

hex() 함수는 파이썬 내장 함수로, 정수를 16진수 문자열로 변환해줍니다. 16진수는 숫자를 0부터 9까지, 그리고 A부터 F까지 총 16개의 문자로 표현하는 방식입니다. 10진수와 달리 16진수는 한 자리로 더 많은 숫자를 표현할 수 있기 때문에 데이터 처리나 메모리 주소 지정 등에 많이 사용됩니다.

hex() 함수의 기본 사용법

hex() 함수는 단순히 정수를 16진수로 변환하는 역할을 합니다. 반환되는 값은 문자열 형식이지만, 내부적으로 16진수로 인식할 수 있습니다. 파이썬에서 16진수로 변환하려면 다음과 같이 hex() 함수를 사용할 수 있습니다.

Python
number = 255
hex_number = hex(number)
print(hex_number)

위 코드에서는 숫자 255를 16진수로 변환하면 결과는 0xff가 됩니다. 0x는 해당 숫자가 16진수임을 나타내는 표기입니다.

그림 1. 파이썬 hex() 함수로 10진수를 16진수 문자열로 변환
그림 1. 파이썬 hex() 함수로 10진수를 16진수 문자열로 변환

출력됩니다. 이때 중요한 점은 0x가 항상 붙는다는 것입니다. 이 표기는 16진수를 나타내는 표준입니다.

음수 변환

파이썬에서 음수를 hex() 함수로 변환하면 음수 부호가 그대로 붙은 채로 16진수로 변환됩니다.

Python
n = -42
hex_value = hex(n)
print(hex_value)

위 예시에서는 -42가 16진수로 변환되어 -0x2a가 됩니다. 음수인 경우에도 0x가 붙지만, 부호는 그대로 유지됩니다.

그림 2. 파이썬 hex() 함수로 음수 10진수를 음수 16진수 문자열로 변환
그림 2. 파이썬 hex() 함수로 음수 10진수를 음수 16진수 문자열로 변환

int() 함수와의 조합

hex()는 16진수로 변환할 때 사용되지만, 반대로 16진수 문자열을 다시 정수로 변환할 때는 int() 함수를 사용할 수 있습니다. int() 함수에 두 번째 인자로 16을 넣으면 16진수 문자열을 다시 10진수로 변환할 수 있습니다.

Python
hex_value = '0xff'
decimal_value = int(hex_value, 16)
print(decimal_value)

위 코드에서는 0xff라는 16진수 문자열을 다시 10진수 정수로 변환한 결과가 255가 됩니다.

그림 3. int()로 16진수 문자열을 10진수로 정수로 변환
그림 3. int()로 16진수 문자열을 10진수로 정수로 변환

파이썬 hex() 없이 포맷팅을 이용한 출력

파이썬에서는 문자열 포맷팅을 통해 더욱 정교하게 16진수 출력을 할 수 있습니다. 특히 format() 함수나 f-string을 사용하면 hex() 함수 없이도 16진수 출력을 쉽게 할 수 있습니다.

Python
n = 255
format(n, 'x')
format(n, '#x')

formatted_hex = f'{n:#x}'
print(formatted_hex)

formatted_hex_no_prefix = f'{n:x}'
print(formatted_hex_no_prefix)

이 방법은 숫자를 16진수로 변환하면서도, 0x 표기를 포함하거나 제외하는 등의 세부적인 제어가 가능합니다.

그림 4. f-string이나 format()을 이용하여 16진수로 변환
그림 4. f-string이나 format()을 이용하여 16진수로 변환

대문자 출력

hex() 함수로 출력되는 16진수는 기본적으로 소문자로 표시됩니다. 만약 대문자로 출력하고 싶다면 upper() 메서드와 함께 사용할 수 있습니다.

Python
n = 255
hex_value = hex(n).upper()
print(hex_value)
그림 5. 파이썬 hex() 함수와 upper() 함수를 함께 사용해서 대문자 표기
그림 5. 파이썬 hex() 함수와 upper() 함수를 함께 사용해서 대문자 표기

또는 아래와 같이 f-string이나 format()을 사용할 때도 대문자로 출력이 가능합니다.

Python
n = 255
formatted_hex = f'{n:#X}'
print(formatted_hex)
format(n, '#X')
그림 6. 파이썬 f-string, format()을 이용한 대문자 16진수 변환
그림 6. 파이썬 f-string, format()을 이용한 대문자 16진수 변환

16진수의 실생활 활용

16진수는 주로 컴퓨터 공학에서 메모리 주소를 나타내거나, 색상 코드를 정의할 때 사용됩니다. 예를 들어, 웹에서 사용하는 색상 코드는 16진수로 표현되며, 이는 RGB 값(빨강, 녹색, 파랑)을 결합한 형태입니다.

HTML
<div style="color: #FF5733;">Hello World</div>

또한, 메모리 주소를 처리하거나, 저수준의 시스템 프로그래밍에서 데이터를 다룰 때도 16진수는 중요한 역할을 합니다. 이를 통해 더 효율적인 데이터 표현과 처리가 가능합니다. 예를 들어, 리눅스에는 xxd라는 명령어가 있습니다. 이 명령어를 사용하면 파일 내부의 값을 16진수로 확인할 수 있습니다.

그림 7. 리눅스 명령어 xxd로 파일의 내용을 16진수로 열람
그림 7. 리눅스 명령어 xxd로 파일의 내용을 16진수로 열람

hex() 사용 시 주의사항

hex() 함수를 사용할 때는 몇 가지 주의해야 할 점이 있습니다.

  • 문자열과 정수의 혼동: hex() 함수는 정수를 16진수 문자열로 변환하므로, 반환된 값을 다시 숫자로 사용하려면 int() 함수로 다시 변환해야 합니다.
  • 부동소수점 숫자: hex() 함수는 부동소수점(float) 값을 직접 변환할 수 없습니다. 따라서 부동소수점을 변환하려면 별도의 처리 과정이 필요합니다.
Python
float_number = 3.14
hex(float_number)

위와 같은 경우, 부동소수점은 정수로 변환한 뒤에 hex()를 사용하는 방법으로 해결할 수 있습니다. 부동소수점을 그냥 사용하면 아래와 같이 “TypeError: ‘float’ object cannot be interpreted as an integer” 메시지를 통해서 알려줍니다.

그림 8. 파이썬 hex() 함수에 부동소수점 값을 대입했을 때 발생하는 오류 메시지
그림 8. 파이썬 hex() 함수에 부동소수점 값을 대입했을 때 발생하는 오류 메시지

정리

이번 포스팅에서는 파이썬에서 hex() 함수를 사용하여 10진수를 16진수로 변환하는 방법을 알아보았습니다. hex() 함수는 매우 간단하지만, 컴퓨터 프로그래밍에서 필수적인 도구입니다. 이를 통해 데이터를 보다 효율적으로 다루거나, 색상 코드 및 메모리 주소 등 다양한 상황에서 활용할 수 있습니다. 또한, int() 함수와의 조합이나 문자열 포맷팅을 통해 더욱 다양한 방식으로 16진수를 처리할 수 있습니다.

파이썬을 활용해 저수준의 데이터 처리나 시스템 프로그래밍을 할 때 hex() 함수는 빠르고 간편하게 16진수로 변환하는 중요한 기능으로 요긴하게 사용할 수 있습니다.

참고자료

관련 포스트

Leave a Comment