2016-08-29 37 views
5

Base64文字列をバイト配列(またはHex値の配列)にデコードするPythonスクリプトを作成します。Base64文字列をバイト配列にデコード

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

私はbase64文字列をデコードし、元の生のバイトを回復する必要があります。結果の文字列は、いくつかの印刷可能でない文字が含まれている文字列です

base64Packet = raw_input('Base64 stream:') 

packet = base64.b64decode(base64Packet) 

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

私のスクリプトは、Python 2.7とbase64でライブラリを使用しています。

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

ありがとうございます!

+0

あなたはすでに*その* bytestringを持っています。あなたはどんなアウトプットを期待していましたか?おそらく、あなたは '%r'を印刷したいと思ったでしょうか? –

+0

@MartijnPieters:デコード後、私は各シングルバイトを含むpythonリストを持っています。 – Federico

+1

なぜそれが必要ですか?あなたはバイトを操作する必要がありますか? 'str'オブジェクトは既にシーケンスです。例えば、' packet [index] 'で各バイトをアドレス指定するか、' for packet in byte: 'で文字列をループすることができます。 –

答えて

5

正確には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) 
+0

ありがとう!私の問題を解決するためにbytearray、binascii、structの使用例を教えてください。私はパイソンのマスターではない! – Federico

+0

の例が追加されました - もしあなたが入力がどんなものになるべきかを具体的にすることができれば、私は拡張することができます... – janbrohl

+0

あなたの例をありがとう!このコード行で整数値のリストを取得します。stapacketString = list(bytearray(base64.b64decode(base64Packet)))。これは正しい方法ですか?私の範囲では、これは機能します。 – Federico

関連する問題