http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 3255|回复: 2

[综合] C#/.NET不使用判断语句实现Bytes到KB,MB,GB,TB单位智能转换的静态扩展方法

[复制链接]
发表于 2015-8-18 21:34:08 | 显示全部楼层 |阅读模式
本帖最后由 lampo 于 2015-8-18 21:44 编辑

在C#/.NET的开发中,如果遇到需要实现Bytes到KB,MB,GB,TB单位转换这样的问题,你会想到的方法有哪些呢?使用if或者switch判断语句,根据传入的Bytes大小来判断返回对应的单位?形如:
[C#] 纯文本查看 复制代码
public static string ConvertByte(long len)
{
  if(len>1024&&len<1024*1024)
  {
    ......
  }
  if(len>1024*1024&&len<1024*1024*1024)
  {
    ......
  }
  ......
 return ...
}


相信有人这样干过吧,笔者以前也这样写过。但做对.NET的开发人员来说,我们在写代码的时候还是应该有些追求的--追求代码执行的效率、追求代码实现的美观。对于实现同样一个结果来说,不同的开发人员会有不同的实现过程。就像本文题目中涉及到的问题,C#/.NET从Bytes转换到KB,MB,GB,TB这个实现也有,下面就来个简单的实现方法,直接看代码:

[C#] 纯文本查看 复制代码
public static string ConvertBytes(this long len)
{
      string[] sizes = { "Bytes", "KB", "MB", "GB", "TB" };
      int order = 0;
      while (len >= 1024 && order + 1 < sizes.Length)
      {
        order++;
        len = len / 1024;
      }
      return String.Format("{0:0.##} {1}", len, sizes[order]);
}


怎么样,是否感觉高大尚了。哈哈。。。
如果你有更好的实现方式,欢迎交流!!!
本文同步发布至:图享 &#187; C#/.NET不使用判断语句实现Bytes到KB,MB,GB,TB单位智能转换的静态扩展方法



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2015-8-19 10:14:56 | 显示全部楼层
我只是路过打酱油的。
 楼主| 发表于 2015-8-19 10:44:22 | 显示全部楼层
站长苏飞 发表于 2015-8-19 10:14
我只是路过打酱油的。

谢谢拜读
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-5-4 22:49

© 2014-2021

快速回复 返回顶部 返回列表