在C#和Python中,基64字符串和字节数组之间的转换各不相同



我有一个长度为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==')

最新更新