스택큐힙리스트

파이썬 3에서 바이트를 16진수 문자열로 변환하는 올바른 방법은 무엇인가요? 본문

카테고리 없음

파이썬 3에서 바이트를 16진수 문자열로 변환하는 올바른 방법은 무엇인가요?

스택큐힙리스트 2023. 4. 20. 14:30
반응형

파이썬 3에서 바이트를 16진수 문자열로 변환하는 올바른 방법은 무엇인가요?

나는 bytes.hex 방법과 bytes.decode 코덱에 대한 주장을 보았고, 놀라움이 최소화된 가능한 모든 함수들을 시도해 보았지만 실패했다. 나는 그냥 바이트를 16진수로 원한다!

답변 1

파이썬 3.5부터 이제 이것은 더 이상 어색하지 않습니다:

>>> b'\xde\xad\xbe\xef'.hex()

'deadbeef'

Translation: 한국어로 번역하세요.

Reverse: Please translate to English.

>>> bytes.fromhex('deadbeef')

b'\xde\xad\xbe\xef'

가변 bytearray 유형과 함께 작동합니다.

참조 : https://docs.python.org/3/library/stdtypes.html#bytes.hex

답변 2

바이트를 16진수 문자열로 변환하는 방법은 Python 3에서 매우 간단합니다. 이 과정은 데이터의 이진 표현을 읽고 이를 16진수 문자열로 전환해주는 과정입니다.

우선 우리는 바이트 객체를 가져오고, 내장 함수 hex()를 이용하여 16진수 문자열로 변환합니다. 이 함수는 각 바이트에 대해 두 자리 16진수 값을 반환해줍니다. 그러나 이 함수의 출력은 접두사로 '0x'가 붙어있는 문자열입니다. 이 부분을 제거하기 위해서는 또 다른 문자열 함수인 slice()를 사용해야 합니다.

아래는 이에 대한 예시입니다.

```python

bytes_object = b'Hello, world!' # 예시를 위한 바이트 객체

hex_string = ''.join(['{:02x}'.format(byte) for byte in bytes_object])

print(hex_string) # 출력 결과: 48656c6c6f2c20776f726c6421

```

위 코드에서 우리는 리스트 컴프리헨션을 이용하여 각 바이트에 대한 16진수 문자열을 생성하고, 이 문자열들을 빈 문자열(join() 함수의 인자)에 붙여나갑니다. 포맷팅 지시자인 '{:02x}'는 각 바이트마다 두 자리 16진수 값을 반환하며, 이를 반복문에서 한 번씩 이용하게 됩니다.

결과적으로, 우리는 bytes_object에 저장된 데이터를 16진수 문자열의 형태로 얻을 수 있습니다. 이는 데이터의 이진 표현을 쉽게 확인하거나, 파일 저장 및 전송에 유용하게 사용될 수 있습니다.

반응형
Comments