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#中lock死锁实例教程

    下面我将详细讲解 “C#中lock死锁实例教程”的完整攻略。在这个攻略中,我会先介绍什么是死锁(deadlock),然后再阐述C#中lock死锁的产生原因及解决办法。最后,我会通过两个具体的示例来说明lock死锁产生的原因和如何避免它。 什么是死锁? 死锁是多个进程(线程)间互相占用对方持有的资源而产生的一种阻塞现象,这些进程或者线程都无法向前推进,除非有外…

    C# 2023年6月7日
    00
  • c#泛型序列化对象为字节数组的示例

    下面是关于“c#泛型序列化对象为字节数组的示例”的完整攻略: 1. 序列化对象为字节数组 1.1. 序列化对象 首先需要定义一个要进行序列化的类,举个例子,我们定义一个名为User的类: public class User { public int Id { get; set; } public string Name { get; set; } } 1.2…

    C# 2023年5月31日
    00
  • 在.NET7中使用MQTTnet简单实现MQTT通信

    一、MQTT简介 MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,主要用于物联网设备间的通信。MQTT协议采用客户端/服务器架构,支持发布/订阅模式和点对点模式,具有高效、可靠、灵活等优点。 MQTT协议主要由三个要素构成:发布者(publisher)、代理服务器(broker)和订阅者(subs…

    C# 2023年4月18日
    00
  • C#中Ilist与list的区别小结

    C#中IList与List的区别小结 在C#中,IList与List是两个常用的接口和类。他们有一些共性,也有一些细微的区别。 IList IList接口定义了一个表示非泛型列表的对象的协定。它派生自ICollection接口并在其基础上添加了一些访问列表中元素的方法,如索引器和插入/删除等操作。IList支持在列表中插入、删除和访问元素的方法。他的定义如下…

    C# 2023年6月7日
    00
  • C# Base 64 编码/解码实现代码

    下面我会详细讲解“C# Base 64 编码/解码实现代码”的完整攻略: 简介 Base 64 编码是一种常见的用于传输二进制数据的编码方式,通常用于在网络传输中将二进制的数据转换为 ASCII 字符串,方便传输和存储。C# 中提供了对 Base 64 编码和解码的支持,使用非常方便。 Base 64 编码实现 C# 中实现 Base 64 编码的方法非常简…

    C# 2023年5月31日
    00
  • C# using的本质及使用详解

    C#中的using语句是一个用于自动管理资源的语句块,它可以帮助我们避免手动管理资源时忘记释放资源的常见错误,从而提高代码的可读性、可维护性和安全性。在本文中,我将详细讲解using语句的本质和用法,以及几个使用示例。 什么是using语句? 在C#中,using语句被用于维护和管理对象的生命周期。它是一个便捷的语句块,允许我们使用或者初始化需要释放资源的对…

    C# 2023年6月6日
    00
  • 未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序报错的解决办法

    当在本地计算机上使用Microsoft Office相关库时,可能会出现“未在本地计算机上注册microsoft.ACE.oledb.12.0”提供程序的报错。这是由于缺少相关的驱动程序或者未安装相应的软件所导致的。下面是解决该问题的完整攻略。 1. 确认公司计算机已安装“Microsoft Access Database Engine” “Microsof…

    C# 2023年5月15日
    00
  • C#中事件的定义和使用

    C#中的事件是一种特殊的委托类型,它可以使对象在某个特定的时间点上引发或触发某个动作或事件。事件可以用于编写响应用户交互、处理消息通知等许多用途。 一、事件的定义 事件定义的基本语法格式如下: public delegate void SomeEventHandler(object sender, EventArgs e); public class Som…

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