ermmm……怎么说呢,这个非常容易搞混,那就写篇 blog 澄清一下吧……
首先贴上百度百科的官方定义
根据国际单位制标准,1KB = 1000B(字节, Byte)。
根据按照 IEC 命名标准 ,用于二进制存储单位的标准命名是 KiB, MiB 等,1KiB = 1024B。这是由数据流的二进制存储法决定的。
简单来说就是以 K、M、G 开头的(kilobyte,megabyte,gigabyte)是以 \(10\) 为底的,而以 Ki、Mi、Gi 开头的(kibibyte,mebibyte,gibibyte)是以 \(2\) 为底的。
不过百度百科上还有一段话
Linux 和 macOS X 采用国际单位制标准命名。但是,Windows xp以下的系统仍然错误地将KiB标记为KB。由于系统仍然以旧的方式记录数据容量,导致混淆已经普遍化,通常 Kilobyte 也可指 Kibibyte,即 1KB = 1024B。
简单来说就是在 IEC 给这东西下定义之前,人们以及混淆了 KB&KiB、MB&MiB 了。故 1KiB 只能等于 1024B,而 KB、MB 视情况而定,比如说 CF 上似乎就把这东西搞混了,128MB 的题 MLE 时显示空间显示 262144KB。
这下搞清楚了吧
原文:https://www.cnblogs.com/ET2006/p/kbkib-difference.html