如何对 string 进行Base64编码,解码?
Posted dotNET跨平台
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何对 string 进行Base64编码,解码?相关的知识,希望对你有一定的参考价值。
咨询区
Kevin Driedger:
如何将指定的 string 编码成 base64。
如何将 base64 解码成 string。
回答区
andrew.fox:
我来分享下对这个问题的处理吧:
对 Encoding 类进行扩展,当然扩展方法还支持各种编码格式,不仅仅是 UTF8。
还一个好处是对 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:
其实这就一行代码的事。。。
Encode:
string encodedStr = Convert.ToBase64String(Encoding.UTF8.GetBytes("inputStr"));
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编码,解码?的主要内容,如果未能解决你的问题,请参考以下文章
Python 对图像进行base64编码及解码读取为numpyopencvmatplot需要的格式