web-dev-qa-db-ja.com

Base64文字列をバイト配列にデコードする

pythonスクリプトを作成して、Base64文字列をバイトの配列(または16進値の配列)にデコードします。

私のプロジェクトの埋め込み側は、生のバイトから始まるbase64文字列を作成するマイクロコントローラーです。文字列には印刷できない文字が含まれています(このため、base64エンコーディングを選択しています)。

Pc側では、base64文字列をデコードし、元の生のバイトを復元する必要があります。

私のスクリプトはpython 2.7とbase64ライブラリを使用しています:

base64Packet = raw_input('Base64 stream:')

packet = base64.b64decode(base64Packet )

sys.stdout.write("Decoded packet: %s"%packet)

結果の文字列は、印刷できない文字を含む文字列です。

Base64文字列をバイト(または16進)値にデコードする方法はありますか?

前もって感謝します!

11
Federico

これには bytearray を使用できます。おそらく binascii モジュールと struct も役に立ちます。

import binascii
import struct

binstr=b"thisisunreadablebytes"

encoded=binascii.b2a_base64(binstr)
print encoded
print binascii.a2b_base64(encoded)

ba=bytearray(binstr)
print list(ba)

print binascii.b2a_hex(binstr)
print struct.unpack("21B",binstr)
8
janbrohl