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

pjngdqdw  于 2022-12-21  发布在  Python
关注(0)|答案(1)|浏览(145)

我有一个长度为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,我错过了什么?

ifmq2ha2

ifmq2ha21#

如果你有base 64编码的信息,你需要解码它来获得字节。在Python 3中(和Python 2中):

import base64

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

假设你的代码看起来可以正常工作,没有错误,那么你一定是在使用Python 2。在Python 3中,在str对象上使用bytearray会引发异常,因为它不知道如何在没有字符串编码信息的情况下将字符串转换成字节。str对象实际上是一个字节序列,所以bytearray在Python 2中只返回字符串作为字节:

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

相关问题