C#实现Base64编码与解码及规则

C# 实现 Base64 编码与解码

Base64 编码将二进制数据转换成 ASCII 字符。C# 中可以通过 System.Convert 类实现 Base64 编码和解码。

Base64 编码

byte[] inputArray = System.Text.Encoding.UTF8.GetBytes("Hello World!"); // 将需要编码的字符串转成 byte 数组
string base64Encoded = System.Convert.ToBase64String(inputArray); // Base64 编码
Console.WriteLine(base64Encoded); // 输出编码结果

上述代码中,首先将需要编码的字符串 Hello World! 转成 byte 数组,然后使用 System.Convert.ToBase64String 方法进行 Base64 编码,最后将编码结果输出。

运行上述代码后,输出结果为:SGVsbG8gV29ybGQh

Base64 解码

string base64Encoded = "SGVsbG8gV29ybGQh"; // 需要解码的 Base64 字符串
byte[] inputArray = System.Convert.FromBase64String(base64Encoded); // Base64 解码
string decodedString = System.Text.Encoding.UTF8.GetString(inputArray); // 解码后的字符串
Console.WriteLine(decodedString); // 输出解码结果

上述代码中,首先将需要解码的 Base64 字符串 SGVsbG8gV29ybGQh 转成 byte 数组,然后使用 System.Text.Encoding.UTF8.GetString 方法将其转换成字符串类型,最后将解码结果输出。

运行上述代码后,输出结果为:Hello World!

Base64 编码规则

Base64 编码规则如下:

  1. 每 3 个字节为一组,将其转换为 4 个字符,即 6 位二进制数转换为 4 个字符。
  2. 如果所有字节数不足 3 的倍数,则在末尾用零字节填充。
  3. Base64 字符表只包含大小写字母、数字以及两个特殊字符 +/

以字符串 "Man" 为例,其对应的 ASCII 码为 0x4D 0x61 0x6E,对应的二进制为:

01001101  01100001  01101110

将上述二进制以每 6 位一组进行分组,分别为:

010011  010110  000101  101110

分别将上述每组 6 位二进制转换为对应的 Base64 字符,得到:

T  W  F  u

因此字符串 "Man" 对应的 Base64 编码结果为 "TWFu"

示例 1:Base64 编码图片

byte[] imageArray = File.ReadAllBytes(@"C:/image.png"); // 读取图片字节数据
string base64Encoded = System.Convert.ToBase64String(imageArray); // 对图片进行 Base64 编码
Console.WriteLine(base64Encoded); // 输出编码结果

上述代码中,首先使用 File.ReadAllBytes 方法读取图片的字节数据,然后使用 System.Convert.ToBase64String 方法将其进行 Base64 编码,最后将编码结果输出。

示例 2:Base64 解码字符串

string base64Encoded = "SGVsbG8gV29ybGQh"; // 需要解码的 Base64 字符串
byte[] inputArray = System.Convert.FromBase64String(base64Encoded); // Base64 解码
string decodedString = System.Text.Encoding.UTF8.GetString(inputArray); // 解码后的字符串
Console.WriteLine(decodedString); // 输出解码结果

上述代码中,首先将需要解码的 Base64 字符串 SGVsbG8gV29ybGQh 转成 byte 数组,然后使用 System.Text.Encoding.UTF8.GetString 方法将其转换成字符串类型,最后将解码结果输出。

参考资料

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现Base64编码与解码及规则 - Python技术站

(0)
上一篇 2023年6月6日
下一篇 2023年6月6日

相关文章

  • c#防止多次运行代码收集分享

    下面是“c#防止多次运行代码收集分享”的完整攻略。 为什么需要防止多次运行代码收集分享? 在一些情况下,我们可能需要避免多次运行同一段代码,例如: 程序中涉及到计费、统计等需要唯一记录的操作。 程序中涉及到文件、资源等需要避免重复操作的情况。 这时就需要在代码中增加防止多次运行的机制。 如何防止多次运行代码收集分享? 方法一:使用静态标志位 使用静态标志位的…

    C# 2023年6月7日
    00
  • WPF Slider滑动条的颜色修改方法

    下面是详细讲解“WPF Slider滑动条的颜色修改方法”的完整攻略。 1. 修改Slider的颜色 在WPF中,可以通过修改Slider的控件模板(Template)来自定义滑动条的颜色。具体步骤如下: 在XAML文件中找到要修改的Slider控件。 设置Slider的控件模板。 例如,为Slider设置一个红色的滑动条,可以这样写: <Slider…

    C# 2023年6月6日
    00
  • 深入理解C#泛型:new与where关键字全解析

    C#泛型中new和where是重要的关键字,它们都可以用于约束泛型类型参数的限制;它们都用于提高代码的安全性和可用性,它们的作用在很大程度上提高了代码的可读性和可维护性。在这篇文章中,我们将一起了解泛型中的new和where,以及它们之间的区别。 1. new关键字 在C#泛型中,new关键字被用于指定泛型类型参数必须具有公共的无参数构造函数。 使用new关…

    C# 2023年4月30日
    00
  • asp.net6 blazor 文件上传功能

    下面是ASP.NET6 Blazor文件上传功能的完整攻略: 1. 简介 在ASP.NET6 Blazor中,文件上传功能可通过<InputFile>组件轻松实现,可以用于上传各种类型的文件,如图片、音频、视频等。通过实现IFormFile接口,开发人员可以轻松地将上传的文件保存到服务器上。 2. 示例 示例1:上传图片 1)前端代码 在Blaz…

    C# 2023年6月3日
    00
  • C# 并行和多线程编程——Task进阶知识

    C#并行和多线程编程——Task进阶知识 概述 在C#中,Task是管理并发编程的重要机制之一。本文将介绍一些Task的进阶知识,帮助你更好地掌握Task的用法。 Task的状态 Task有三种状态:- TaskStatus.Running:正在运行- TaskStatus.WaitingToRun:等待运行- TaskStatus.WaitingForCh…

    C# 2023年5月15日
    00
  • C#实现发送手机验证码功能

    一、生成验证码 使用Random类生成随机数字或字母,示例代码如下: Random random = new Random(); string code = ""; for (int i = 0; i < 6; i++) { code += random.Next(10); } 将随机生成的验证码保存到Session中,代码如下: …

    C# 2023年6月6日
    00
  • Razor常用语法介绍及示例

    下面是关于“Razor常用语法介绍及示例”的详细攻略: Razor常用语法介绍及示例 1. Razor简介 Razor是ASP.NET Web Pages框架的视图引擎,它融合了C#和HTML的表现力和灵活性,可以在不破坏HTML结构的前提下,让服务器端代码和客户端代码混合在一起。 Razor语法是以“@”符号开头的指令和表达式组成的,它支持各种C#语法和H…

    C# 2023年5月31日
    00
  • .net开发:为程式码加上行号的方法详解

    为程式码加上行号一般是在编写代码时为了方便阅读和调试而进行的。下面给出两种在.NET开发中为程序代码加上行号的方法详解。 方法一 步骤一:添加代码 在你想要添加行号的代码处新增以下代码: string[] lines = textBox1.Text.Split(‘\n’); for (int i = 0; i < lines.Length; i++) …

    C# 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部