C# Base64编码函数

C# 中的 Base64 编码函数可以将二进制数据转换为文本字符串,这个编码过程是可逆的,可以通过反解码函数将 Base64 字符串还原成原始二进制数据。本文将详细介绍 C# 中 Base64 编码函数的用法,包括编码方法、解码方法、示例等内容。

Base64 编码方法

在 C# 中使用 Base64 编码方法可以通过 System.Convert 类和 System.Text.Encoding 类提供的静态方法进行。

1. 使用 System.Convert 类中的静态方法实现 Base64 编码

System.Convert 类中的 ToBase64String 方法可以将一个包含字节序列的数组转换为一个 Base64 字符串表示形式。

byte[] bytes = new byte[] { 1, 2, 3, 4, 5 };
string base64Str = System.Convert.ToBase64String(bytes);
Console.WriteLine(base64Str); // 输出:AQIDBAU=

2. 使用 System.Text.Encoding 类中的静态方法实现 Base64 编码

System.Text.Encoding 类中的 GetBytes 方法可以将字符串编码为一个包含 8 位无符号整数的字节数组,并且可以选择使用 Base64 编码算法进行编码。

string originalString = "hello world";
byte[] originalBytes = System.Text.Encoding.UTF8.GetBytes(originalString);
string base64Str = System.Convert.ToBase64String(originalBytes);
Console.WriteLine(base64Str); // 输出: aGVsbG8gd29ybGQ=

Base64 解码方法

与 Base64 编码方法一样,Base64 解码方法在 C# 中同样可以使用 System.Convert 类和 System.Text.Encoding 类提供的静态方法实现。

1. 使用 System.Convert 类中的静态方法实现 Base64 解码

System.Convert 类中的 FromBase64String 方法可以将一个 Base64 字符串表示形式转换为一个包含字节序列的数组。

string base64Str = "AQIDBAU=";
byte[] bytes = System.Convert.FromBase64String(base64Str);
foreach (byte b in bytes)
{
    Console.Write("{0} ", b); // 输出: 1 2 3 4 5
}

2. 使用 System.Text.Encoding 类中的静态方法实现 Base64 解码

System.Text.Encoding 类中的 GetBytes 方法同样支持使用 Base64 算法进行解码。

string base64Str = "aGVsbG8gd29ybGQ=";
byte[] base64Bytes = System.Text.Encoding.UTF8.GetBytes(base64Str);
byte[] bytes = System.Convert.FromBase64String(System.Text.Encoding.UTF8.GetString(base64Bytes));
string originalString = System.Text.Encoding.UTF8.GetString(bytes);
Console.WriteLine(originalString); // 输出:hello world

示例

下面是一个使用 Base64 编码和解码函数的示例程序:

using System;

namespace Demo
{
    class Program
    {
        static void Main(string[] args)
        {
            string originalString = "hello world";
            byte[] originalBytes = System.Text.Encoding.UTF8.GetBytes(originalString);

            // Base64 编码
            string base64Str = System.Convert.ToBase64String(originalBytes);
            Console.WriteLine(base64Str);

            // Base64 解码
            byte[] base64Bytes = System.Text.Encoding.UTF8.GetBytes(base64Str);
            byte[] bytes = System.Convert.FromBase64String(System.Text.Encoding.UTF8.GetString(base64Bytes));
            string decryptedString = System.Text.Encoding.UTF8.GetString(bytes);
            Console.WriteLine(decryptedString);
        }
    }
}

输出:

aGVsbG8gd29ybGQ=
hello world

以上就是 C# 中 Base64 编码函数的详细介绍,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# Base64编码函数 - Python技术站

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

相关文章

  • Java Map集合使用方法全面梳理

    Java Map集合使用方法全面梳理 什么是Java Map集合 在Java编程中,Map是一个非常有用的接口,它可以帮助我们管理具有键值对的数据集合。具体来说,一个Map对象是由一组键值对组成,其中每个键(key)都必须是唯一且不变的,而每个值(value)可以是任意对象(包括null)。Map中的键值对是没有固定的顺序的。 Java提供了多种不同的Map…

    Java 2023年6月15日
    00
  • javaweb实现文件上传与下载功能

    请看以下内容: javaweb实现文件上传与下载功能攻略 1. 上传功能的实现 1.1 前端的实现 上传功能需要用户选择文件,并将文件发送到后台。我们可以通过HTML表单及其相关API来实现此功能。以下是一段HTML代码片段,用于实现文件上传输入框: <form action="/upload" method="post&…

    Java 2023年5月20日
    00
  • 基于JS实现导航条flash导航条

    针对“基于JS实现导航条flash导航条”的完整攻略,我给出如下详细讲解: 介绍 flash导航条,是通过flash技术来实现网站导航栏,使导航效果更为优美且富有动感。在近年来,随着web前端技术的发展,人们开始尝试使用javascript的方式实现类似的效果。下面参加我将通过两个案例,详细解释如何通过JS实现这样一个效果。 实现思路 实现flash导航条,…

    Java 2023年6月15日
    00
  • Java实战小技巧之数组与list互转

    可以按照以下步骤将Java数组和List进行互相转换: 将数组转换为List 使用Arrays类的asList方法将数组转换为List java String[] array = {“a”, “b”, “c”}; List<String> list = Arrays.asList(array); 这里将String类型的数组转换为List类型的列…

    Java 2023年5月26日
    00
  • java lambda循环_使用Java 8 Lambda简化嵌套循环操作

    下面是关于Java 8 Lambda简化嵌套循环操作的攻略: 1. lambda表达式简介 Java 8引入了lambda表达式,它是一种匿名函数,可以像参数一样传递给方法或赋值给变量。在使用lambda表达式时只需要关注其输入和输出,而不必关心具体的实现细节,这让代码变得更加简洁易读。 2. 简化循环操作 在Java 8之前,嵌套循环操作可能会使代码显得冗…

    Java 2023年5月26日
    00
  • Java 数据结构之时间复杂度与空间复杂度详解

    Java 数据结构之时间复杂度与空间复杂度详解 什么是时间复杂度和空间复杂度 在了解时间复杂度和空间复杂度之前,我们需要先了解一下什么是复杂度。 在计算机科学中,复杂度是指算法的性能指标,主要包括时间复杂度和空间复杂度。 时间复杂度是指算法在执行过程中所需要的时间资源,通常用执行次数来表示,也被称为算法的渐进时间复杂度。 空间复杂度是指算法在执行过程中所需要…

    Java 2023年5月26日
    00
  • PHP一些有意思的小区别

    当我们在使用PHP进行开发的时候,可能会遇到一些有趣的小区别,这些小区别可能不会影响代码的运行,但是了解这些区别可以让我们更全面地理解PHP语言。下面是一些例子: 单引号和双引号 在PHP中,单引号和双引号用于定义字符串,二者有所不同。单引号中的文本会被原样输出,而双引号中的文本会被解析并替换掉其中的变量。例如: $name = "Tom&quot…

    Java 2023年6月15日
    00
  • MyBatis还是JPA?终于有答案了

    我们来详细讲解“MyBatis还是JPA?终于有答案了”的完整攻略。 1. 背景介绍 在进行Java Web开发时,ORM框架是不可或缺的工具之一,其可以将Java对象映射到关系型数据库中。MyBatis和JPA是流行的ORM框架,那么如何选择呢? 2. MyBatis和JPA区别 2.1 MyBatis MyBatis是基于SQL语句的ORM框架,其与关系…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部