"1deadbeef3".decode('hex')
# Out: '\\x1d\\xea\\xdb\\xee\\xf3'
'\\x1d\\xea\\xdb\\xee\\xf3'.encode('hex')
# Out: 1deadbeef3
"1deadbeef3".decode('hex')
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# AttributeError: 'str' object has no attribute 'decode'
b"1deadbeef3".decode('hex')
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# LookupError: 'hex' is not a text encoding; use codecs.decode() to handle arbitrary codecs
'\\x1d\\xea\\xdb\\xee\\xf3'.encode('hex')
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# LookupError: 'hex' is not a text encoding; use codecs.encode() to handle arbitrary codecs
b'\\x1d\\xea\\xdb\\xee\\xf3'.encode('hex')
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# AttributeError: 'bytes' object has no attribute 'encode'
However, as suggested by the error message, you can use the [codecs](<https://docs.python.org/3/library/codecs.html>)
module to achieve the same result:
import codecs
codecs.decode('1deadbeef4', 'hex')
# Out: b'\\x1d\\xea\\xdb\\xee\\xf4'
codecs.encode(b'\\x1d\\xea\\xdb\\xee\\xf4', 'hex')
# Out: b'1deadbeef4'
Note that [codecs.encode](<https://docs.python.org/3/library/codecs.html#codecs.encode>)
returns a bytes
object. To obtain a str
object just decode
to ASCII:
codecs.encode(b'\\x1d\\xea\\xdb\\xee\\xff', 'hex').decode('ascii')
# Out: '1deadbeeff'