当前位置: 首页 > news >正文

怎么做便民信息网站支付宝接口 网站备案

怎么做便民信息网站,支付宝接口 网站备案,wordpress 移动版主题,全国十大公关公司【导读】最近遇到很有意思转换二进制的问题#xff0c;有部分童鞋俨然已了解#xff0c;可能也有一部分童鞋没碰到过也就不知情#xff0c;这里我们来深入学习下转换二进制所带来的问题。在写此篇文章时#xff0c;非常开心#xff0c;收到再一次连任MVP的邮件#xff0c… 【导读】最近遇到很有意思转换二进制的问题有部分童鞋俨然已了解可能也有一部分童鞋没碰到过也就不知情这里我们来深入学习下转换二进制所带来的问题。在写此篇文章时非常开心收到再一次连任MVP的邮件这是我第4年连任希望能再接再厉一如既往能够给大家分享我所获二进制转换问题假设现在我们有一个int类型的数据它的范围区间暂且定在0-15之间我们需要将其转换为二进制然后获取二进制中的每一位若不足4位则0填充。看似很简单是不是直接通过C#内置APi即可达到此需求如下 var binary  Convert.ToString(7, 2).PadLeft(4, 0).ToArray(); 上述将数字7转换为包含二进制位的字符串数组形式7转换二进制然后不足4位以0填充即0111我们如下获取二进制位字符串数组为索引的位结果应该打印出0对吗var zerobit  binary[0]; Console.WriteLine(zerobit); 好像一点毛病也没有这是在控制台中进行打印若是将该数据导出到Excel中你会发现结果将可能是48或49而不是0或1你可以一试这是因为如下我们通过调试可知实际上在字符0上还携带有48这个48实际上是字符0的ASCII码字符1的ASCII码是49通过如下代码即可证明foreach (var b in System.Text.Encoding.UTF8.GetBytes(binary)) {Console.WriteLine(b.ToString()); } 我们对将对应字符数组索引数据进行如下ToString转换即可避免导出数据时可能出现的问题var zerobit  binary[0]; Console.WriteLine(zerobit.ToString()); 转换字符数组问题当我们转换为字符数组时有两种方式既可采用上述ToArray方法也可以通过ToCharArray方法来实现如下那么哪种方法会更好呢var binary  Convert.ToString(7, 2).PadLeft(4, 0).ToArray();var binary1  Convert.ToString(7, 2).PadLeft(4, 0).ToCharArray(); 此时比较此二者方法的性能好坏只能去看对应源码实现首先我们来看看ToCharArray方法如下public unsafe char[] ToCharArray() {if (Length  0){return Array.Emptychar();}char[] array  new char[Length];fixed (char* smem  _firstChar){fixed (char* dmem  array[0]){wstrcpy(dmem, smem, Length);}}return array; } internal unsafe static void wstrcpy(char* dmem, char* smem, int charCount) {Buffer.Memmove((byte*)dmem, (byte*)smem, (uint)(charCount * 2)); } 上述对于ToCharArray代码量还是不多我们来看看ToArray方法实现如下public static TSource[] ToArrayTSource(this IEnumerableTSource source) {if (source  null){throw Error.ArgumentNull(source);}return new BufferTSource(source).ToArray(); } 上述只是写了一个扩展方法我们继续往下看Buffer类的具体实现如下internal Buffer(IEnumerableTElement source) {TElement[] array  null;int num  0;ICollectionTElement collection  source as ICollectionTElement;if (collection ! null){num  collection.Count;if (num  0){array  new TElement[num];collection.CopyTo(array, 0);}}else{foreach (TElement item in source){if (array  null){array  new TElement[4];}else if (array.Length  num){TElement[] array2  new TElement[checked(num * 2)];Array.Copy(array, 0, array2, 0, num);array  array2;}array[num]  item;num;}}items  array;count  num; } 从代码量上看就觉得ToArray方法实现稍微复杂一点所以我们选择使用ToCharArray会更好我要是如此草草结束此文一定会喷。原归正传我们一步步来分析如上做了一点优化首先会判断参数是否属于集合接口若是则直接通过复制转换为数组形式但是我们知道字符串肯定没有实现ICollectionT接口所以走另外一个条件分支但是有的童鞋可能就有疑问了此时为何可以遍历呢那是因为针对字符实现了IEnumerablechar接口所以可以进行遍历如下public sealed class CharEnumerator : IEnumerator, ICloneable, IEnumeratorchar, IDisposable {......} 接下来则是初始化容量为4的数组为何这里为4呢这里我认为应该谈不上优化与其说是实现者的一种拍脑袋的想法我倾向于理解为是一种权衡或考量既然转到此分支说明一定是转换为二进制位的数组比如上述进行填充后长度刚好为4。再接下来无用我再多讲就是遍历所有字符数组将每一个字符串添加到数组中去直到数组长度和变量值num相等最终进行一次性复制最终将数组赋值给数组元素以及将变量num赋值给数组元素的数量count。  好了讲解了这么多那么问题来了到底谁的性能会更好呢ToCharArray方法实现底层采用指针操作转化为字符数组而利用ToArray方法由于string没有实现ICollectionT接口也就是说根本不清楚字符串中字符数组的长度所以只能采取低效遍历的方式去进行转换我们可认为通过中间缓冲区的方式即上述通过实例化数组作为桥梁最终进行复制实现。由此得出在将字符串转换为字符数组时一定要用ToCharArray方法而不是ToArrayToCharArray性能优于ToArray方法我不禁在想针对字符转换为数组只提供ToCharArray方法不就好了么为何还要提供ToArray方法让人容易产生误会它的场景难道还有其他吗本文详细讲解了在转换二进制数据所引发的一点个人思考在将字符串转换为字符数组时通过方法名称意思可能直接就用ToCharArray方法但是又偏偏提供了字符串的ToArray方法其本质是针对字符数组的扩展方法如果对源码不了解的话根本就不清楚到底应该用哪一个从性能角度讲ToCharArray方法优于ToArray方法至于最终用哪一个你说了算。
http://wiki.neutronadmin.com/news/310870/

相关文章:

  • 做网站前需要准备什么条件官方网站让第三方建设放心吗
  • 嘉兴做网站赚钱么做毕业设计网站的问题与展望
  • 西安专业做网站网站版面结构
  • 做调差问卷的网站建设网站要钱吗
  • 做网站一定要虚拟主机吗大学新校区建设网站
  • wordpress腾讯云插件seo从入门到精通
  • 国内做网站哪个好wordpress 运行卡
  • 做三国mod的网站广州百度网站快速排名
  • 郑州网站优化推广方案wordpress批量导入页面
  • 新公司做网站多少钱主流的网站建设的软件有哪些
  • 现在由哪些网站可以做外链如何写网站优化目标
  • 网站空间1g多少钱seo专员是干嘛的
  • 什么网站可以做ppt模板哪家云服务器性价比高
  • 企业网站推广方案网络营销作业wordpress增加页面分类
  • 中国山东网站建设wordpress死链接提交
  • 枣庄市建设局网站华为荣耀商城官网
  • 建设新农村网站自己做网站地址
  • 哪个网站可以做危险化学品供求世界排名前十位
  • 最新国际新闻事件今天做网站优化
  • 找做网站的人网站没备案怎么做广告联盟
  • 石家庄定制网站建设多少钱怎么设置wordpress底栏文字
  • 青岛网站排名哪家公司好计算机哪个专业最吃香女生
  • 顺德做网站推广哪家好免费注册网址
  • 女人与马做受网站化妆品备案查询网站
  • 可以专做福特配件吗外贸网站wordpress做分类网站
  • 自己制作网站的软件宝安建网站外包
  • 图书馆建设网站注意点腾讯的wordpress怎么样
  • 响应式网站设计与实现论文个人开店做外贸网站
  • 营销型网站的名词解释杭州网站设计推荐柚米
  • 有后台的网站谷歌应用商店app下载