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

yizhihongxing

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#语言中的一种数据类型,它允许我们写出能够适用于多种数据类型的代码。泛型作用于类、接口、方法等,可以大大提高代码的复用性和可读性。 泛型的语法与用法 泛型类 泛型类可以适用于多种数据类型,我们可以通过类名后加尖括号传入数据类型,例如: public class MyList<T> { private T[]…

    C# 2023年5月15日
    00
  • C#写一套最全的MySQL帮助类(包括增删改查)

    介绍说明:这个帮助类包含了六个主要的方法:ExecuteNonQuery、ExecuteScalar、ExecuteQuery、ExecuteQuery(泛型)、Insert、Update和Delete。其中,ExecuteNonQuery用于执行不返回结果集的SQL语句;ExecuteScalar用于执行一个查询,并返回结果集中第一行的第一列;Execut…

    C# 2023年4月22日
    00
  • C#使用读写锁三行代码简单解决多线程并发的问题

    让我们开始。 介绍 在C#中,多线程并发可能会引发一些问题,比如数据竞争等。为了解决这些问题,我们可以使用读写锁(ReaderWriterLock)来控制并发访问共享资源。 读写锁是一种锁定机制,允许多个线程同时读取共享资源,但只允许一个线程写入共享资源。这样可以在不阻塞读取操作的情况下,避免写入操作修改共享数据。 下面我们将使用三行代码来演示如何使用读写锁…

    C# 2023年5月15日
    00
  • .NET Core中依赖注入AutoMapper的方法示例

    .NET Core中依赖注入AutoMapper的方法示例 AutoMapper是常用于对象映射的库,它可以方便地将一个对象的属性映射到另一个对象中。使用依赖注入(Dependency Injection,DI)可以将AutoMapper集成到.NET Core中,使其更加易于使用和管理。 第一步:安装AutoMapper和AutoMapper.Extens…

    C# 2023年6月3日
    00
  • 详解C# Protobuf如何做到0分配内存的序列化

    C# protobuf是Google开发的一种高效的序列化格式。相较于其他序列化方式(比如XML或Json),它所占用的空间更少,同时速度更快,因为它是二进制序列化格式。在进行序列化过程中,内存的分配是一个非常重要的问题,因为大量的内存分配会导致性能下降甚至内存溢出。本文将详细介绍C# protobuf如何实现0分配内存的序列化。 一、使用“MemorySt…

    C# 2023年5月31日
    00
  • 详解c# 泛型类的功能

    详解C#泛型类的功能 什么是泛型类? 泛型类是一种能够以参数化类型的方式工作的类。它们在C#语言中非常普遍,几乎是所有.NET框架中各种集合类型的基础。通过使用泛型类,我们可以提高代码的复用性和可移植性,并且可以避免出现类型强制转换等问题。 泛型类的声明方式 class MyClass<T> //这里的T是一个类型参数 { T field1; T…

    C# 2023年5月15日
    00
  • asp.net 页面回跳实现代码

    ASP.NET页面回跳是指在页面上执行一些操作后,跳转到另一个页面。在ASP.NET中,我们可以通过Response.Redirect()方法实现页面回跳。下面是实现页面回跳的步骤和代码示例。 步骤 在需要执行页面回跳的位置,使用Response.Redirect()方法。该方法的参数可以是相对路径或绝对路径。 在接收回跳的页面中,处理接收到的信息。 示例1…

    C# 2023年5月31日
    00
  • C#串口接收程序的实现

    C#串口接收程序的实现攻略 串口通信是一种常见的设备与计算机之间进行数据传输的方式。在C#中,我们可以使用SerialPort类来实现串口接收程序的实现。下面是实现串口接收程序的完整攻略: 1. 创建串口接收程序的项目 首先,我们需要创建一个新的C#项目。在Visual Studio中,可以通过选择“新建项目”并选择“控制台应用程序”来完成。在新建项目的过程…

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