gpt4 book ai didi

c++ - 正确地将 B 转换为 MB,或者完全错误

转载 作者:行者123 更新时间:2023-11-30 17:30:00 35 4
gpt4 key购买 nike

我在这些事情上不是很有经验,所以请尽量不要立即下结论。好的,我得到了一个以字节为单位的数字,我一直在尝试将其转换为 mb,但几乎没有一致性或成功。例如,当我“获取信息”时,我的目录返回为 191,919,191 字节 (191.919 MB)。

我很好奇如何自己转换它,所以这是我学到的:

谷歌:

1 KB = 1000 B

1 MB = 1000 KB

1 GB = 1000 MB

到目前为止一切顺利...

1024000 B(KB)= 1024

1024 KB (MB) = 1.024

这看起来完全合乎逻辑......

191,919,191 B to MB = 191.919 MB

这看起来也是正确的,但是当我使用现有的大多数代码示例将字节转换为 mb 时,我最终得到的结果与友好的 ol' google 截然不同。

According to Princeton

SYNOPSIS:
Converting between bytes, kilobytes, megabytes, and gigabytes.

SOLUTION:
1 byte = 1 character
1 kilobyte (kb) = 1024 bytes
1 megabyte (Mb) = 1024 kb = 1,048,576 bytes
1 gigabyte (Gb) = 1024 Mb = 1,048,576 kb = 1,073,741,824 bytes

有了这些信息:

191.919 mb / (1024000) = 187.421 B

我也见过这样的转换:

191.919 mb / (1024 * 1024) = 183.028 B

什么鬼?这些东西是我们在进行过程中编造出来的,还是有一些标准方法可以从字节中获取实际文件大小(以 mb 为单位)?由于这些相互矛盾的信息,我现在完全迷失和困惑了。我不知道谁对谁错,或者我是否完全错过了一些东西。

我有这样的代码:

UInt32 fileSize = 191919191; // size in bytes
UInt32 mbSize = fileSize / 1024000; // do conversion
printf(@"%u MB",(unsigned int)mbSize); // result:

哪些输出:

187 MB

那么 191,919,191 字节到底是如何 = 191 MB 的呢?

最佳答案

简单总结一下...

  • 官方的、SI标准化的、正确使用的前缀是kilo = 10^3 = 1000、mega = 10^6 = 1000000等等。缩写为K、M、G等。
  • 数字世界有一组单独的前缀,其中 kibi = 2^10 = 1024、mebi = 2^20 = 1048576 等等。缩写有 Ki、Mi、Gi 等。
  • 在流行用法中,缩写 K、M、G 等有点含糊,有时被理解为表示一件事,有时被理解为另一件事。

底线是,无论何时重要,您都必须格外小心,了解您正在使用哪个。有些文档没有考虑到这一点,并且可能会产生很大的误导。我认为这种模糊性不会很快改变。

关于c++ - 正确地将 B 转换为 MB,或者完全错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25346628/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com