Trong Python 2, để có được một chuỗi đại diện của các chữ số thập lục phân trong một chuỗi, bạn có thể làmCách sử dụng mã hóa 'hex' trong Python 3.2 hoặc cao hơn?
>>> '\x12\x34\x56\x78'.encode('hex')
'12345678'
Trong Python 3, điều đó không có tác dụng nữa (thử nghiệm trên Python 3.2 và 3.3):
>>> '\x12\x34\x56\x78'.encode('hex')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
LookupError: unknown encoding: hex
có ít nhất one answer đây trên SO đề cập đến rằng hex
bộ giải mã đã được gỡ bỏ bằng Python 3. Nhưng sau đó, according to the docs, nó lại được đưa vào trong Python 3.2, như là một "byte-to-byte lập bản đồ".
Tuy nhiên, tôi không biết làm thế nào để có được những "byte-to-byte ánh xạ" để làm việc:
>>> b'\x12'.encode('hex')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'bytes' object has no attribute 'encode'
Và các tài liệu không đề cập rằng một trong hai (ít nhất không phải là nơi tôi nhìn) . Tôi phải thiếu một cái gì đó đơn giản, nhưng tôi không thể nhìn thấy nó là gì.
thấy câu trả lời này: http: // stackoverflow.com/a/2340358/1298523 – scape
Tôi sẽ tranh luận chống lại việc này như một sự lừa đảo. Câu hỏi này đặc biệt về Python 3.2, nơi mà codec 'hex' được chính thức quay trở lại (nhưng khó tìm hơn). Câu hỏi được liên kết là về Python 3.1. –