문자열에 긴 16 진수 숫자가 있습니다.
000000000000484240FA063DE5D0B744ADBED63A81FAEA390000C8428640A43D5005BD44
훨씬 더 길고 몇 킬로바이트입니다. 파이썬 2.6 / 3에서 이것을 바이트 객체로 변환하는 내장 방법이 있습니까?
문자열에 긴 16 진수 숫자가 있습니다.
000000000000484240FA063DE5D0B744ADBED63A81FAEA390000C8428640A43D5005BD44
훨씬 더 길고 몇 킬로바이트입니다. 파이썬 2.6 / 3에서 이것을 바이트 객체로 변환하는 내장 방법이 있습니까?
답변:
python3을 포함하여 Python 2.7 이상에서 작동합니다.
result = bytearray.fromhex('deadbeef')
참고 :bytearray.fromhex()
Python 2.6 의 함수에 버그가있는 것 같습니다 . python.org 문서에는 함수가 문자열을 인수로 받아들이지 만 적용되면 다음 오류가 발생한다고 명시되어 있습니다.
>>> bytearray.fromhex('B9 01EF')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: fromhex() argument 1 must be unicode, not str`
bytes(bytearray.fromhex('deadbeef'))
binascii.unhexlify()
.
result = bytes.fromhex(some_hex_string)
16 진 코덱으로이 작업을 수행 할 수 있습니다. 즉 :
>>> s='000000000000484240FA063DE5D0B744ADBED63A81FAEA390000C8428640A43D5005BD44'
>>> s.decode('hex')
'\x00\x00\x00\x00\x00\x00HB@\xfa\x06=\xe5\xd0\xb7D\xad\xbe\xd6:\x81\xfa\xea9\x00\x00\xc8B\x86@\xa4=P\x05\xbdD'
codecs.decode('0a0a0a', 'hex_codec')
2.x 및 3.x에서 작동해야합니다. :-)
binascii 모듈 사용해보기
from binascii import unhexlify
b = unhexlify(myhexstr)
unhexlify
이제 문자열을 허용하지 않고 바이트 만 허용합니다. 정말 어리석은 일이지만 사용해야한다는 뜻입니다b = unhexlify(bytes(myhexstr, 'utf-8'))
import binascii
binascii.a2b_hex(hex_string)
그게 내가 한 방식입니다.
import binascii
binascii.b2a_hex(obj)