web-dev-qa-db-ja.com

'str'オブジェクトには属性 'decode'がありません

16進文字列をバイナリ値にデコードしようとしています。私はそれを完了するためにインターネットで以下のコマンドを見つけました、

string_bin = string_1.decode('hex')

しかし私は言ってエラーを得ました

'str' object has no attrubute 'decode'

python v3.4.1を使用しています。

11
rao

文字列オブジェクトをデコードすることはできません。それらはすでにデコードされています。別の方法を使用する必要があります。

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オブジェクトを取得できます。

11
Martijn Pieters

binascii を使用します。

import binascii

binary_string = binascii.unhexlify(hex_string)
1
orlp