Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 正确或完全错误地将B转换为MB_C++_Objective C_C_Int - Fatal编程技术网

C++ 正确或完全错误地将B转换为MB

C++ 正确或完全错误地将B转换为MB,c++,objective-c,c,int,C++,Objective C,C,Int,我对这些事情不是很有经验,所以请不要一开始就下结论。好的,我有一个以字节为单位的数字,我一直试图转换成mb,但一致性和成功率都很低。例如,当我“获取信息”时,我的目录返回19191字节(191.919 MB) 我很好奇如何自己转换它,所以我学到了以下几点: 谷歌: 1KB=1000B 1 MB=1000 KB 1 GB=1000 MB 到目前为止还不错 1024000字节(KB=1024) 1024 KB,MB=1.024 这似乎完全合乎逻辑 这看起来也很正确,但当我使用现有的大部分代码样本将

我对这些事情不是很有经验,所以请不要一开始就下结论。好的,我有一个以字节为单位的数字,我一直试图转换成mb,但一致性和成功率都很低。例如,当我“获取信息”时,我的目录返回19191字节(191.919 MB)

我很好奇如何自己转换它,所以我学到了以下几点:

谷歌:

1KB=1000B

1 MB=1000 KB

1 GB=1000 MB

到目前为止还不错

1024000字节(KB=1024)

1024 KB,MB=1.024

这似乎完全合乎逻辑

这看起来也很正确,但当我使用现有的大部分代码样本将字节转换为mb时,我最终得到的结果与友好的google完全不同

因此,有了这些信息:

191.919 mb / (1024000) = 187.421 B
我也见过这样的转换:

191.919 mb / (1024 * 1024) = 183.028 B
WTF?这是我们一直在做的事情,还是有一些标准的方法可以从字节中得到真正的文件大小(mb)?由于这些相互矛盾的信息,我现在完全不知所措。我真的不知道谁是对的,谁是错的,或者我完全错过了什么

我有这样的代码:

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

187 MB
那么19191字节=191MB究竟怎么可能呢?总结一下

  • 国际标准化的官方正确前缀用法是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等略显模糊,有时理解为一种意思,有时理解为另一种意思

底线是,无论什么时候重要,你都必须格外小心,知道你在用什么。一些文档不会注意到这一点,可能会产生误导。我认为这种模糊性不会很快改变。

@quantdev,在我的问题中点击谷歌链接。什么是对的?我想知道-我的系统返回的结果与谷歌的结果相同。在维基百科上查找显示,它可以引用二进制值(1000^2)或十进制值(1024^2)。@quantdev:没有错。KB、MB、GB等的定义存在冲突。@quantdev:我也是。我正在尝试重新调整自己,改用Kibibytes、Mebibytes和Gibibytes,因为我更喜欢正确使用SI前缀。@BenjaminLindley要花很长时间才能找到它,但你引用的真实姓名描述的是1024而不是1000的倍数,这让我想起了几年前我在另一个留言板上看到的一篇文章,在这篇文章中,作者声称,除其他行业通俗的原因外,你从来没有听到有人说kibibyte,mebibyte,其中一个原因是它在没有听起来像工具的情况下是不可能使用的。我不得不笑了。谢谢你唤起了我的回忆
187 MB