我有一个长度为16字节的C#字节数组b_a
。当我将b_a
转换为64进制字符串aaa
时,它的长度返回24
string aaa = Convert.ToBase64String(b_a);
Console.WriteLine(aaa.Length); //24
Console.WriteLine(aaa); //'xKKkTjcKsfBDqpIJBKn6QQ=='
我想用Python将aaa
字符串转换为字节数组。但当我转换它时,它的长度仍然返回24。
aaa = 'xKKkTjcKsfBDqpIJBKn6QQ=='
b_a = bytearray(aaa)
len(b_a) #24
我想得到所有的初始b_a
。我错过的重点是什么?
如果您有base64编码的信息,则需要对其进行解码以获得字节。在Python 3(和Python 2中(中:
import base64
aaa = 'xKKkTjcKsfBDqpIJBKn6QQ=='
b_a = base64.b64decode(aaa)
len(b_a) # 16
考虑到您的代码显然可以正常工作,您必须使用Python2。在Python3中的str
对象上使用bytearray
会引发异常,因为它不知道如何在没有字符串编码信息的情况下将字符串转换为字节。但在Python 2中,str
对象实际上是隐藏的字节序列。所以bytearray
只是在Python2:中以字节形式返回str
>>> aaa = 'xKKkTjcKsfBDqpIJBKn6QQ=='
>>> bytearray(aaa)
bytearray(b'xKKkTjcKsfBDqpIJBKn6QQ==')