Base 64 字符串和字节数组之间的转换在 C# 和 Python 中有所不同

Conversion Between Base 64 String and Byte Array Varies in C# and Python

我有一个长度为 16 字节的 C# 字节数组 b_a。当我将 b_a 转换为 base 64 字符串 aaa 时,它的长度为 returns 24

string aaa = Convert.ToBase64String(b_a);
Console.WriteLine(aaa.Length); //24
Console.WriteLine(aaa); //'xKKkTjcKsfBDqpIJBKn6QQ=='

我想将 aaa 字符串转换为 Python 中的字节数组。但是当我转换它时,它的长度仍然是 returns 24.

aaa = 'xKKkTjcKsfBDqpIJBKn6QQ==' 
b_a = bytearray(aaa)
len(b_a) #24

我想得到所有人的首字母b_a。我错过了什么?

如果您有 base 64 编码的信息,您需要对其进行解码以获取字节。在 Python 3 中(在 Python 2 中):

import base64

aaa = 'xKKkTjcKsfBDqpIJBKn6QQ=='
b_a = base64.b64decode(msg)
len(b_a)  # 16

鉴于您的代码显然没有错误,您必须使用 Python 2。在 Python 3 中的 str 对象上使用 bytearray 会引发异常,因为它不知道如何在没有字符串编码信息的情况下将字符串转换为字节。但是在 Python 2 中,str 对象实际上是底层的字节序列。所以 bytearray 只是 returns str as bytes in Python 2:

>>> aaa = 'xKKkTjcKsfBDqpIJBKn6QQ=='
>>> bytearray(aaa)
bytearray(b'xKKkTjcKsfBDqpIJBKn6QQ==')