HOWTO · Python

Python에서 바이트를 16 진수로 변환

파이썬에서 바이트를 16 진수로 변환하는 방법을 소개합니다.

이 튜토리얼은 파이썬에서 바이트를 16 진수로 변환하는 방법을 소개합니다.

Python의 바이트 데이터 유형은 디스크에 변수로 저장할 수있는 바이트 시퀀스로, 인코딩 및 디코딩이 가능합니다. 문자열처럼 선언되지만 문자 b가 접두사로 붙습니다. 바이트는\x로 시작하는 특수 유니 코드 문자를 허용합니다.

Python에서 바이트 리터럴 초기화

바이트 리터럴의 예를 제공하고 특수 문자로 문자열을 선언하고encode('utf-8')함수를 사용하여이를 바이트 리터럴로 변환합니다.

byte_var = "γιαούρτι - yogurt".encode("utf-8")

print(byte_var)

출력:

b'\xce\xb3\xce\xb9\xce\xb1\xce\xbf\xcf\x8d\xcf\x81\xcf\x84\xce\xb9 - yogurt'

encode()의 출력은 문자b가 접두사로 붙은 바이트 리터럴이되고 특수 문자는 유니 코드 기호로 변환됩니다.

이제 바이트 선언이 다루어졌습니다. 바이트를 16 진수로 변환 해 보겠습니다.

hex()메서드를 사용하여 Python에서 바이트를 16 진수로 변환

Python 3.5에서 도입 된 hex()메서드는이를 16 진수 문자열로 변환합니다.

이 경우 인수는 16 진수로 변환 할 바이트 데이터 유형이됩니다.

byte_var = "γιαούρτι - yogurt".encode("utf-8")

print("Byte variable: ", byte_var)
print("Hexadecimal: ", byte_var.hex())

출력:

Byte variable:  b'\xce\xb3\xce\xb9\xce\xb1\xce\xbf\xcf\x8d\xcf\x81\xcf\x84\xce\xb9 - yogurt'
Hexadecimal:  ceb3ceb9ceb1cebfcf8dcf81cf84ceb9202d20796f67757274

binascii 모듈을 사용하여 Python에서 바이트를 16 진수로 변환

binascii Python 모듈에는 바이너리 및 ASCII 작업을위한 효율적인 유틸리티 함수가 포함되어 있습니다.

이 모듈에는 주어진 인수의 16 진수 값을 반환하는 함수hexlify()가 있는데, 이는 이진 값입니다.

이 예에서 인수는 16 진수로 변환 할 바이트 변수입니다.

import binascii

byte_var = "γιαούρτι - yogurt".encode("utf-8")

print("Byte variable: ", byte_var)
print("Hexadecimal: ", binascii.hexlify(byte_var))

출력:

Byte variable:  b'\xce\xb3\xce\xb9\xce\xb1\xce\xbf\xcf\x8d\xcf\x81\xcf\x84\xce\xb9 - yogurt'
Hexadecimal:  b'ceb3ceb9ceb1cebfcf8dcf81cf84ceb9202d20796f67757274'

hexlify()의 반환 값은 변환 된 문자열을 반환하는hex()와 달리 바이트 리터럴을 반환합니다.

결과를 문자열로 변환하려면decode('utf-8')함수를 사용하십시오.

import binascii

byte_var = "γιαούρτι - yogurt".encode("utf-8")

print("Byte variable: ", byte_var)
print("Hexadecimal: ", "" + binascii.hexlify(byte_var).decode("utf-8"))

출력:

Byte variable:  b'\xce\xb3\xce\xb9\xce\xb1\xce\xbf\xcf\x8d\xcf\x81\xcf\x84\xce\xb9 - yogurt'
Hexadecimal:  ceb3ceb9ceb1cebfcf8dcf81cf84ceb9202d20796f67757274

이제 16 진 결과가 바이트 리터럴에서 문자열로 변환됩니다.

요약하자면, 파이썬에서 바이트를 16 진수로 변환하는 두 가지 방법을 다뤘습니다. 가장 간단한 방법은 내장 함수hex()를 바이트 리터럴에 사용하는 것입니다. 또는binascii 모듈의hexlify()함수를 사용하여 동일한 출력을 생성 할 수도 있습니다.