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