频道栏目
首页 > 资讯 > 其他综合 > 正文

Byte/KB/MB/GB 等字节单位换算

14-10-21        来源:[db:作者]  
收藏   我要投稿

字节单位换算公式:

  1. 1 GB = 1024 MB
  2. 1 MB = 1024 KB
  3. 1 KB = 1024 Bytes
  4. 1 Byte = 8 bits
将字节单位转化为目标单位

根据公式我写了一段C++代码,用于将输入的以字节为单位的数值,转换为目标单位数值。代码中的枚举类型用的是C++11的语法。

  1. enum class Unit{
  2. Byte, KB, MB, GB, TB, PB, EB
  3. };
  4. double convert(double size, Unit unit)
  5. {
  6. double result = size;
  7. switch (unit)
  8. {
  9. case Unit::EB:
  10. result /= 1024; // flow through
  11. case Unit::PB:
  12. result /= 1024; // flow through
  13. case Unit::TB:
  14. result /= 1024; // flow through
  15. case Unit::GB:
  16. result /= 1024; // flow through
  17. case Unit::MB:
  18. result /= 1024; // flow through
  19. case Unit::KB:
  20. result /= 1024; // flow through
  21. case Unit::Byte:
  22. result /= 1;
  23. default:
  24. break;
  25. }
  26. return result;
  27. }

测试代码:

  1. #include
  2. #include
  3. using namespace std;
  4. int main()
  5. {
  6. double size = 2.4 * std::pow(1024, 3); // 2.4GB
  7. cout << convert(size, Unit::Byte) << "Byte" << endl;
  8. cout << convert(size, Unit::KB) << "KB" << endl;
  9. cout << convert(size, Unit::MB) << "MB" << endl;
  10. cout << convert(size, Unit::GB) << "GB" << endl;
  11. cout << convert(size, Unit::TB) << "TB" << endl;
  12. cout << convert(size, Unit::PB) << "PB" << endl;
  13. cout << convert(size, Unit::EB) << "EB" << endl;
  14. return 0;
  15. }

运行结果:

  1. 2.57698e+009Byte
  2. 2.51658e+006KB
  3. 2457.6MB
  4. 2.4GB
  5. 0.00234375TB
  6. 2.28882e-006PB
  7. 2.23517e-009EB
将字节单位转化为合适的单位

上面的代码中必须指定目标单位,但很多时候我不知道目标单位,只要转化后的单位看上去比较合理(数值介于1-1024之间)即可,所以又写了下面这段代码,输入以字节为单位的数值,返回一个二元组,该而二元组包含了转换后的大小以及单位。

  1. std::pair convert(double size)
  2. {
  3. std::pair result = std::make_pair(size, Unit::Byte);
  4. while (result.first >= 1024)
  5. {
  6. result.first /= 1024;
  7. result.second = static_cast(1 + static_cast(result.second));
  8. }
  9. return result;
  10. }

测试代码:

  1. std::pair result = convert(size);
  2. cout << result.first; // 输出结果: 2.4GB
  3. switch (result.second)
  4. {
  5. case Unit::Byte:
  6. cout << "Byte" << endl; break;
  7. case Unit::KB:
  8. cout << "KB" << endl; break;
  9. case Unit::MB:
  10. cout << "MB" << endl; break;
  11. case Unit::GB:
  12. cout << "GB" << endl; break;
  13. case Unit::TB:
  14. cout << "TB" << endl; break;
  15. case Unit::PB:
  16. cout << "PB" << endl; break;
  17. case Unit::EB:
  18. cout << "EB" << endl; break;
  19. default: break;
  20. }
相关TAG标签
上一篇:台积电:绝大多数7nm客户都会转向6nm_IT新闻_博客园
下一篇:最后一页
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站