在瓦工助手App里会显示磁盘空间和流量的使用情况,API返回的单位是B,为了方便,使用了ByteCountFormatter
来转换成可读的GB或MB,没想到还踩坑里了。
要不是用户在Telegram群里反馈说App里显示的流量数据和搬瓦工后台的不完全一致,还真发现不了,后台显示的是一个整数,而App里显示的是带小数的,而且比官方后台稍微大一点。
直觉告诉我,这应该是进制差异导致的问题,有些人习惯1000 bytes表示1KB,而计算机认的是1024 bytes。App里的大,很有可能App里用的是1000了,难道Apple是用1000进制来计算文件大小的?
查了一下API文档,我的猜测没错,Apple确实是用1000进制的,不过ByteCountFormatter
有好几种CountStyle
:
binary
使用的是1024,decimal
使用的是1000,而file
和memory
分别使用了decimal
和binary
。不幸的是我使用的是file
:
1 | ByteCountFormatter.string(fromByteCount: Int64(usedData), countStyle: .file) |
改成binary
就正常了:
1 | ByteCountFormatter.string(fromByteCount: Int64(usedData), countStyle: .binary) |