Python 将Base64字符串解码为字节数组

Python 将Base64字符串解码为字节数组,python,string,embedded,base64,decode,Python,String,Embedded,Base64,Decode,我将创建一个python脚本,将Base64字符串解码为字节数组(或十六进制值数组) 我的项目的嵌入式部分是一个微控制器,它创建一个从原始字节开始的base64字符串。该字符串包含一些不可打印的字符(因此我选择base64编码) 在Pc端,我需要解码base64字符串并恢复原始字节 我的脚本使用python 2.7和base64库: base64Packet = raw_input('Base64 stream:') packet = base64.b64decode(base64Packet

我将创建一个python脚本,将Base64字符串解码为字节数组(或十六进制值数组)

我的项目的嵌入式部分是一个微控制器,它创建一个从原始字节开始的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字符串解码为字节(或十六进制)值

提前谢谢

您完全可以使用它。可能是模块,也可能有帮助

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)

你已经有了bytestring。你期望得到什么样的结果?你看到了什么?也许你想在打印时使用
%r
?@MartijnPieters:解码后,我会有一个包含每个字节的python列表。你为什么需要它?您需要操纵字节吗?
str
对象已经是一个序列,例如,您可以使用
packet[index]
对每个字节进行寻址,或者使用
对packet中的byte:
循环字符串。您只需使用
list(packet)
创建列表,即可生成一个包含1个字符(byte)字符串的列表。或者,您可能想使用
bytearray
对象,但不清楚您想对数据做什么。您还没有给我们您的用例。那么您需要一个
bytearray()
实例;只需使用
bytearray(packet)
。字节数组是0-255范围内的可变整数序列,每个字节一个整数。谢谢!你能提供一个使用bytearray、binascii和struct解决我的问题的例子吗?我不是巨蟒大师!添加示例-如果您能更具体地说明输入应该是什么,我可以扩展…感谢您的示例!我使用以下代码行获取整数值列表:statacketstring=list(bytearray(base64.b64decode(base64Packet)))。这是正确的方法吗?对于我的工作范围来说,这是正确的-实际上
bytearray
s的行为类似于
list
s(打印除外),因此构建
list
只需要更漂亮的打印。很高兴我能帮忙:)