如何对 string 进行Base64编码,解码?

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何对 string 进行Base64编码,解码?相关的知识,希望对你有一定的参考价值。

咨询区

  • Kevin Driedger

  1. 如何将指定的 string 编码成 base64。

  2. 如何将 base64 解码成 string。

回答区

  • andrew.fox

我来分享下对这个问题的处理吧:

  1. 对 Encoding 类进行扩展,当然扩展方法还支持各种编码格式,不仅仅是 UTF8。

  2. 还一个好处是对 null 的支持,毕竟在真实项目中你总会遇到的。

代码如下:


namespace MyApplication.Helpers.Encoding
{
    public static class EncodingForBase64
    {
        public static string EncodeBase64(this System.Text.Encoding encoding, string text)
        {
            if (text == null)
            {
                return null;
            }

            byte[] textAsBytes = encoding.GetBytes(text);
            return System.Convert.ToBase64String(textAsBytes);
        }

        public static string DecodeBase64(this System.Text.Encoding encoding, string encodedText)
        {
            if (encodedText == null)
            {
                return null;
            }

            byte[] textAsBytes = System.Convert.FromBase64String(encodedText);
            return encoding.GetString(textAsBytes);
        }
    }
}

然后像下面这样用。


using MyApplication.Helpers.Encoding; // !!!

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Test1();
            Test2();
        }

        static void Test1()
        {
            string textEncoded = System.Text.Encoding.UTF8.EncodeBase64("test1...");
            System.Diagnostics.Debug.Assert(textEncoded == "dGVzdDEuLi4=");

            string textDecoded = System.Text.Encoding.UTF8.DecodeBase64(textEncoded);
            System.Diagnostics.Debug.Assert(textDecoded == "test1...");
        }

        static void Test2()
        {
            string textEncoded = System.Text.Encoding.UTF8.EncodeBase64(null);
            System.Diagnostics.Debug.Assert(textEncoded == null);

            string textDecoded = System.Text.Encoding.UTF8.DecodeBase64(textEncoded);
            System.Diagnostics.Debug.Assert(textDecoded == null);
        }
    }
}

  • Zeigeist

其实这就一行代码的事。。。

  1. Encode:


string encodedStr = Convert.ToBase64String(Encoding.UTF8.GetBytes("inputStr"));

  1. Decode:


string inputStr = Encoding.UTF8.GetString(Convert.FromBase64String(encodedStr));

点评区

看了下 Convert.FromBase64String 的源码,在入参为null的情况下会抛出异常。


public static string ToBase64String(byte[] inArray)
{
 if (inArray == null)
 {
  throw new ArgumentNullException("inArray");
 }
 return ToBase64String(inArray, 0, inArray.Length, Base64FormattingOptions.None);
}

我觉得项目中这种反馈肯定是不能接受的,所以哈,用一个扩展方法挺好,学习了!

以上是关于如何对 string 进行Base64编码,解码?的主要内容,如果未能解决你的问题,请参考以下文章

在 Java 中如何进行 BASE64 编码和解码

在Java中如何进行BASE64编码和解码

在 java 中如何进行base64 编码和解码

Python 对图像进行base64编码及解码读取为numpyopencvmatplot需要的格式

NodeJS:如何将base64编码的字符串解码回二进制? [复制]

解码某些 Base64 字符串时出错,但不是其他字符串