ZetCode

C# Base64

最后修改于 2023 年 7 月 5 日

在本文中,我们将展示如何将二进制数据编码和解码为/从 Base64。

编码是将数据从一种形式转换为另一种形式的过程。 解码是相反的过程。

Base64 是一组类似的二进制到文本编码方案,它以文本字符串格式表示二进制数据。

当我们需要在设计用于处理文本的媒体上传输和存储二进制数据时,通常使用 Base64 编码方案。 例如,Base64 编码用于电子邮件附件。

Convert 类包含以下与 Base64 相关的方法:ToBase64StringToBase64CharArrayFromBase64StringFromBase64CharArray

C# Convert.ToBase64String

Convert.ToBase64String 方法将 8 位无符号整数数组转换为其等效的字符串表示形式,该字符串表示形式使用 base-64 数字进行编码。

Program.cs
using System.Text;

string msg = "one 🐘 and three 🐋";
byte[] data = Encoding.UTF8.GetBytes(msg);

string base64 = Convert.ToBase64String(data);

Console.WriteLine(msg);
Console.WriteLine(string.Join(' ', data.Select(e => e.ToString("X2"))));
Console.WriteLine(base64);

我们定义一个包含两个表情符号字符的字符串。

byte[] data = Encoding.UTF8.GetBytes(msg);

首先,我们将字符串转换为字节数组。

string base64 = Convert.ToBase64String(data);

然后,我们使用 Convert.ToBase64String 将数组转换为 base-64 字符串。

Console.WriteLine(msg);
Console.WriteLine(string.Join(' ', data.Select(e => e.ToString("X2"))));
Console.WriteLine(base64);

我们打印字符串、十六进制格式的数组和 base-64 字符串。

$ dotnet run
one 🐘 and three 🐋
6F 6E 65 20 F0 9F 90 98 20 61 6E 64 20 74 68 72 65 65 20 F0 9F 90 8B
b25lIPCfkJggYW5kIHRocmVlIPCfkIs=

C# Convert.FromBase64String

Convert.FromBase64String 将指定的字符串(该字符串将二进制数据编码为 base-64 数字)转换为等效的 8 位无符号整数数组。

Program.cs
using System.Text;

string base64 = "b25lIPCfkJggYW5kIHRocmVlIPCfkIs=";
byte[] data = Convert.FromBase64String(base64);

string msg = Encoding.UTF8.GetString(data);

Console.WriteLine(base64);
Console.WriteLine(string.Join(' ', data.Select(e => e.ToString("X2"))));
Console.WriteLine(msg);

我们使用 Convert.FromBase64String 将 base-64 编码转换为字符串。

$ dotnet run
b25lIPCfkJggYW5kIHRocmVlIPCfkIs=
6F 6E 65 20 F0 9F 90 98 20 61 6E 64 20 74 68 72 65 65 20 F0 9F 90 8B
one 🐘 and three 🐋

C# Base64 扩展方法

在以下示例中,我们创建用于编码和解码 Base64 数据的扩展方法。

Program.cs
using System.Text;

namespace Base64Ex;

class Program
{
    static void Main()
    {
        string msg = "one 🐘 and three 🐋";
        string base64 = msg.EncodeBase64();
        string msg2 = base64.DecodeBase64();

        Console.WriteLine(msg);
        Console.WriteLine(base64);
        Console.WriteLine(msg2);
    }
}

static class ExtensionMethods
{
    public static string EncodeBase64(this string value)
    {
        byte[] data = Encoding.UTF8.GetBytes(value);
        return Convert.ToBase64String(data);
    }

    public static string DecodeBase64(this string value)
    {
        byte[] data = System.Convert.FromBase64String(value);
        return Encoding.UTF8.GetString(data);
    }
}

该程序创建了 EncodeBase64DecodeBase64 扩展方法。

string msg = "one 🐘 and three 🐋";
string base64 = msg.EncodeBase64();
string msg2 = base64.DecodeBase64();

可以直接在字符串上调用扩展方法。

$ dotnet run
one 🐘 and three 🐋
b25lIPCfkJggYW5kIHRocmVlIPCfkIs=
one 🐘 and three 🐋

来源

Base64 类 - 语言参考

在本文中,我们展示了如何将二进制数据编码和解码为/从 Base64。

作者

我的名字是 Jan Bodnar,我是一位充满热情的程序员,拥有丰富的编程经验。 我自 2007 年以来一直撰写编程文章。 迄今为止,我已经撰写了超过 1,400 篇文章和 8 本电子书。 我拥有超过十年的编程教学经验。

列出所有 C# 教程