16進文字列をバイナリ値にデコードしようとしています。私はそれを完了するためにインターネットで以下のコマンドを見つけました、
string_bin = string_1.decode('hex')
しかし私は言ってエラーを得ました
'str' object has no attrubute 'decode'
python v3.4.1を使用しています。
文字列オブジェクトをデコードすることはできません。それらはすでにデコードされています。別の方法を使用する必要があります。
codecs.decode()
function を使用して、hex
をコーデックとして適用できます。
_>>> import codecs
>>> codecs.decode('ab', 'hex')
b'\xab'
_
これは Binary transform コーデックに適用されます。これは、入力文字列を大文字に変換して base64.b16decode()
function を使用するのと同じです。
_>>> import base64
>>> base64.b16decode('AB')
b'\xab'
_
binascii.unhexlify()
function を使用して、一連の16進数をバイトに「デコード」することもできます。
_>>> import binascii
>>> binascii.unhexlify('ab')
b'\xab'
_
どちらの方法でも、bytes
オブジェクトを取得できます。
binascii
を使用します。
import binascii
binary_string = binascii.unhexlify(hex_string)