发布于 

MacOS 文件大小的单位

缘由

我一直以为文件大小都是按照 1024 为单位来计算的, 但是在 MacOS 上面是按照 1000 为单位计算的, windows 上面是按照 1024 为单位来计算的.

偶然的发现

之前写代码, 需要用到获取文件大小的功能, 代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 读取文件大小
long getFileSize(char *filename) {

FILE *fp = fopen(filename, "r");
if (!fp) {
return -1;
}

fseek(fp, 0, SEEK_END);

long size = ftell(fp);
fclose(fp);

return size;
}

文件名是 mm.aac, 一个音频文件, 获取到的文件大小是 76395 字节.

我无聊至极, 使用 du 命令来获取该文件的大小:

1
du -sh mm.aac 

显示文件大小是 76KB.

MacOS 上面查看文件属性, 获取到的大小也是 76KB

1

二者获取的文件大小一致, 可以看出文件的大小是正确的.

于是我查了一下在 windows 上面的该文件的大小, 如下截图:

1

可以看出, MacOS 上面文件大小是按照 1000 单位来计算的, 而 windows 上面是按照 1024 单位来计算的.

1
2
76395 / 1000 = 76.395
76395 / 1024 = 74.604

按照 GNU 的习惯,单纯的 K M G T 分别指代 KiB MiB GiB TiB 以 1024 进制数据量单位,用 KB MB GB TB 以 1000 进制数据量单位.

所以, 在 windows 上面准确表示 76395bytes 应该是 74.6KiB.

推荐

在线计算 单位换算.


本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

veryitman