如何对 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);
}

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/299162.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python编程自然数表达式_[宜配屋]听图阁

普通的数学运算用这个纯抽象的符号演算来定义,计算结果只能在脑子里存在。所以写了点代码,来验证文章中介绍的演算规则。我们来验证文章里介绍的自然数及自然数运算规则。说到自然数,今天还百度了一下,据度娘说,1993年…

Oracle分区表常用命令

一、Oracle分区简介 ORACLE的分区是一种处理超大型表、索引等的技术。分区是一种“分而治之”的技术,通过将大表和索引分成可以管理的小块,从而避免了对每个表作为一个大的、单独的对象进行管理,为大量数据提供了可伸缩的性能。分区通过将操作…

linux--web服务器

WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。 WWW 是 Internet的多媒体信息查询工具,是 Internet 上近年才发展起来的服务,也是发展最快和目前用的最广泛的服务。1.rpm -qa|grep httpd 查询服务是否安装…

WPF轮播图实现方式

WPF开发者QQ群: 340500857 | 微信群 -> 进入公众号主页 加入组织欢迎转发、分享、点赞、在看,谢谢~。 01—效果预览效果预览(更多效果请下载源码体验):02—代码如下一、MasterCarousel.cs 代码如下using System; …

学过物理的人才能看懂的笑话,你能看明白几个?

全世界只有3.14 % 的人关注了爆炸吧知识1丈夫买了几斤廉价藕,满以为可对妻子炫耀了。不料妻子破口大骂:笨蛋!为何不买别的菜,这藕一斤少说也有半斤窟窿啊!还说便宜?2第一次坐飞机的两位老妇人在飞机起飞前找…

QtWebkit中浏览器插件的设计-1

我们都知道浏览器中有一套由Netscape浏览器传承下来的插件接口,包括webkit,firefox都是支持的,但是那个开发起来比较困难,并且是平台相关的,借助于Qt的跨平台的特性,可以方便地为Qt开发出一套跨平台的插件。…

mysql左键关联_MySQL的:左键删除重复列加入,3个表

我有一个表,使用3个外键到其他表.当我执行左连接时,我会收到重复的列.MySQL表示,USING语法将减少重复的列,但没有多个键的示例.鉴于:mysql> describe recipes;---------------------------------------------------------------| Field | Type | Null | Key | De…

cisco 双ISP线路接入,链路自动切换方案

最近接到的一个项目,客户总部在惠州,分部在香港,在香港分部设有ERP服务器与邮件服务器,总部出口为铁通10M光纤与网通1M DDN 专线(新增),原总部是用netscreen 防火墙与香港的pix 515作IPsec 对接…

js遮罩层以及移动端的上拉框

今天发一个之前写的移动端的项目,主要是讲一下遮罩层的应用,以及顺带提一下移动开发的一些事情。首先按钮点击弹出遮罩层这个大家很熟悉了,这里还是给大家提供一份代码,跟通用的没太大区别,主要讲一下方法:…

精简ABP的模块依赖

ABP的模块非常方便我们扩展自己的或使用ABP提供的模块功能,对于ABP自身提供的模块间的依赖关系想一探究竟,并且试着把不必要的模块拆掉,找到那部分核心模块。本次使用的是AspNetBoilerplate。源码下载从Github下载ABP源码后,进入s…

你这飞机会爆炸吗?航空公司含泪甩卖49元机票,却被超模君挖出秘密!

全世界只有3.14 % 的人关注了爆炸吧知识制作团队制作人 超模君编剧 恐恐恐插画 杨羊羊 友情出演 超模君 章小天……小天吐槽时刻……超模君之后还会采访谁呢小天有小道消息哦扫描这个二维码你将会有机会见识到超模君的科普沙雕网友们一起斗图↓↓↓↓…

[zz]WCF分布式开发步步为赢(0):WCF学习经验分享,如何更好地学习WCF?

WCF分布式开发学习,应该从哪里开始? 学习WCF是不是就不需要学习Enterprise Sevices(COM).Net Remoting、Web Service(ASMX)、WSE3.0和MSMQ消息队列? WCF分布式开发学习,如何制定一个合理的计划,才能更好地学习WCF分布式应用开…

C#报错:创建调试信息文件 ……obj\Debug\model.pdb: 拒绝访问

错误:创建调试信息文件“.......\obj\Debug\model.pdb”时发生错误 --“......\obj\Debug\model.pdb: 拒绝访问。 解决办法如下: 删除该项目下的 bin 和 obj 文件夹 就可以了,然后右键项目名点生成,就会重新生成bin和obj文件夹。

linux nginx mysql php 5.5._搭建基于Linux6.3+Nginx1.2+PHP5+MySQL5.5的Web服务器全过程

之前的Web服务器都是通过yum搭建的,想要添加新模块或者更新某些软件都很不方便(牵一发而动全身啊!)。所以,现在准备将环境改为源码编译安装,这样便于调整,性能上也会比yum方式好很多。以下是我的安装步骤,我…

ASP 缩略图 (纠错版)

网上很多缩略的代码&#xff0c;不过很多都是错误的。 这个是纠正版&#xff0c;本人已修改。 Code<%Function PicReSize(picURL)FileName1Mid(picURL,13,22)Set Jpeg Server.CreateObject("Persits.Jpeg") 获取源图片路径Path Server.MapPath(picURL) 打开源图…

Blazor Server 应用程序中进行 HTTP 请求

翻译自 Waqas Anwar 2021年5月4日的文章 《Making HTTP Requests in Blazor Server Apps》 [1]Blazor Server 应用使用标准的 ASP.NET Core 应用程序&#xff0c;在服务端执行 .NET 代码。在 Blazor Server 应用程序中&#xff0c;我们可以像在 ASP.NET Core Web 应用程序中那样…

遍历属性动态展示列

为什么80%的码农都做不了架构师&#xff1f;>>> 前端根据后台返回json对象(Map)进行动态列展示。 javascript属性遍历和访问&#xff1a; //var obj {name:"h2do",age:0,sex:"男"}; function User(){this.name "h2do";this.age 0…

厉害了!这几位小学生竟然在艺术界掀起一阵风暴,简直是灵魂画手无疑.........

全世界只有3.14 % 的人关注了爆炸吧知识高能预警&#xff01;请查阅全文&#xff01;在孩子们的眼中&#xff0c;世间万物都被赋予了无限的想象力&#xff0c;而绘画是他们独特想法和思维的表达。一支小小的画笔&#xff0c;便能创造一个千奇百怪的世界。为鼓励孩子们拿起画笔&…

java范型_Java知识点总结(Java泛型)

Java知识点总结(Java泛型)(Java知识点总结)[Java, Java泛型][toc]泛型泛型就是参数化类型适用于多种数据类型执行相同的代码泛型中的类型在使用时指定泛型归根到底就是“模版”优点&#xff1a;使用泛型时&#xff0c;在实际使用之前类型就已经确定了&#xff0c;不需要强制类型…

花开的声音 - 张靓颖

姓名&#xff1a;张靓颖 / Jane Zhang性别&#xff1a;女 地区&#xff1a;内地 职业&#xff1a;歌手 星座&#xff1a;天秤座 血型&#xff1a;O 身高&#xff1a;162cm张靓颖&#xff0c;中国女歌手&#xff0c;四川成都人。2005年参加湖南卫视…