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

字节单位换算公式:

  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 <iostream>
  2. #include <cmath>
  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<double, Unit> convert(double size)
  2. {
  3. std::pair<double, Unit> result = std::make_pair(size, Unit::Byte);
  4. while (result.first >= 1024)
  5. {
  6. result.first /= 1024;
  7. result.second = static_cast<Unit>(1 + static_cast<int>(result.second));
  8. }
  9. return result;
  10. }

测试代码:

  1. std::pair<double, Unit> 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. }
时间: 2024-10-07 05:50:09

Byte/KB/MB/GB 等字节单位换算的相关文章

KB/MB/GB。。单位换算

今天遇到一个需求,需要把数据单位进行换算,记录一下.写的不好请勿见怪. function bytesToSize( bytes ) {//单位转化         var k = 1024,              sizes = ['b','KB','MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];         if(bytes === 0){             return {   txt: 0,                 unit: si

储存容量单位:Bit, Byte, KB, MB, GB, TB , PB, EB, ZB, YB

最近在看Hadoop权威指南这本书,其中设计了很多单位, 不过我以前的书本好像也只有教到 GB, 现在的教科书可能有教到 TB 或 PB 吧,但我不确定,不过在不久的将来可能又会有更大的单位有机会用到, 这几天正好玩了一个测验脑容量的无聊游戏,也藉此了解了更多储存容量的单位.  计算机的最小单位为 Bit (位), 以下是所有数量单位的说明与其英文全名:   1 Byte = 8 Bits  1 Kilobyte (KB) = 1024 Bytes   1 Megabyte (MB) = 102

字节b换算kb/mb/gb/tb/pb

public static string HumanReadableFilesize(double size) { string[] units = new string[] { "B", "KB", "MB", "GB", "TB", "PB" }; double mod = 1024.0; int i = 0; while (size >= mod) { size /= mod

根据文件大小自动判断单位B,KB,MB,GB

<php> /** * 文件大小格式化 * @param integer $size 初始文件大小,单位为byte * @return array 格式化后的文件大小和单位数组,单位为byte.KB.MB.GB.TB */ function file_size_format($size = 0, $dec = 2) { $unit = array("B", "KB", "MB", "GB", "TB&qu

计算机存储单位KB,MB,GB,TB,PB,EB,ZB,YB后面是什么?

关于计算机存储单位KB,MB,GB,TB,PB,EB,ZB,YB后面是什么? 我们知道Kb是1000的1次方,所以 MB就是1000的2次方(106) GB就是1000的3次方(109) TB就是1000的4次方(1012) PB就是1000的5次方(1015) EB就是1000的6次方(1018) ZB就是1000的7次方(1021) YB就是1000的8次方(1024) 但是1000的9次方(1027)是什么呢? 对此我查阅了国外很多资料,他们有着很多不同的说法, 说法一:Brontobyt

计算机硬盘大小转换(B,KB,MB,GB,TB,PB之间的大小转换)

程序猿都非常懒.你懂的! java程序猿在实际的开发中会遇到非常多的单位换算问题.今天我给大家带来的是关于计算机硬盘大小的换算.多数情况下.一般要求b,kb,mb,gb,tb,pb之间的大小转换,我们都知道他们之间的换算是乘以1024或者除以1024.可是详细怎么用java代码来实现呢?请看以下的代码: package com.herman.utils; /*** * @see 存储大小(单位)转换器. * @author Herman.Xiong * @date 2014年5月27日 13:2

Bit,Bytes,KB,MB,GB,TB,PB,EB,ZB,YB

Bit,Bytes,KB,MB,GB,TB,PB,EB,ZB,YB 汉字字符 2字节英文字符 1字节中文标点 2字节英文标点 1字节一个字节就是一个八位二进制数啊,2就是00000010,4就是00000100,8就是00001000 把标点符号和字符修改成占2个字节的方法 在cms中,大家会发现发表文章的时候如果里面有标点符号,它只点一个字节,可是在网站的显示过程中它和汉字所占的位置长度是一样的,为了达到更好的效果.在这里告诉大家标点符号和字符修改成占2个字节的方法 '函数名:gotTopic

取文件的大小 (KB,MB,GB...)

2种方式: VB 和 C# 1,  VB Public Function GetFileSize(ByVal iFileSizeKB As Long) As String Dim iFileSizeMB As Integer Dim iFileSizeGB As Integer If (iFileSizeKB >= 1024) Then iFileSizeMB = iFileSizeKB / 1024 If (iFileSizeMB >= 1024) Then iFileSizeGB = iF

bit,byte,汉字,KB,MB,GB,TB...

bit-----位,比特位,这两种说法都可以.它是计算机中最小的存储数据单位,最小的. 比如:1111 1111     或者0000 0000每一个1或者每个0都是一个bit. byte --字节(用B表示),它是计算机存储容量的基本单位 1 byte = 8 bit ="a" 或者"b"     //反正就是26个字母中的一个字母. 2 byte = 1 个汉字=2 * 8=16 bit   (这句话也可以写成 2B=1个汉字=16 bit) KB 1 KB =