首页 > 解决方案 > Base 64 字符串和字节数组之间的转换在 C# 和 Python 中有所不同

问题描述

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

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

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

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

我想对b_a所有人进行初步了解。我想念什么?

标签: pythonc#arraysbase64

解决方案


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

import base64

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

鉴于您的代码显然可以正常工作,因此您必须使用 Python 2。在 Python 3 中bytearraystr对象使用会引发异常,因为它不知道如何在没有字符串编码信息的情况下将字符串转换为字节。但在 Python 2 中,str对象实际上是引擎盖下的字节序列。因此bytearray,只需在 Python 2 中将 str 作为字节返回:

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

推荐阅读