3

私は、BYTESでコンテンツの長さを報告するスクリプトを使用してファイルサイズをチェックしています。これは、Macで表示されるものと完全に一致しますが、バイトをKBに変換すると次のようになります。

function formatBytes($bytes, $precision = 2) { 
    $units = array('B', 'KB', 'MB', 'GB', 'TB'); 

    $bytes = max($bytes, 0); 
    $pow = floor(($bytes ? log($bytes) : 0) / log(1024)); 
    $pow = min($pow, count($units) - 1); 

    $bytes /= (1 << (10 * $pow)); 

    return round($bytes, $precision) . ' ' . $units[$pow]; 
}

... KB単位のサイズは、Macで表示されるサイズとは常に異なります。

例:

Windows 8 TV Ad Tune.m4r

  • バイト(Mac):4,27,840バイト
  • KB(Mac):428KB

  • バイト(スクリプト):427840

  • KB(スクリプト):417.81 KB

そのスクリプトまたは何か他のものがこの違いを引き起こしているのだろうか?

ありがとう!

4

3 に答える 3

5

Macは1000規則を使用しているようです。つまり、1kBは1000バイトです。変換では1kB=1024バイトを使用しています。どちらも技術的には正しいですが、ほとんどのプログラマーは1kB=1024を使用します。Macは1kB=1000を使用し、Windowsは1kB=1024を使用します。

ハードドライブの製造元は1000規則を使用するため、宣伝時に大きな数値を使用できます。そのため、マシンにインストールした1テラバイトのハードドライブは、Windowsでは931ギガバイトしかないと表示されます。

コードでファイルサイズをチェックするときの私の推奨事項は、常にバイトを使用することです。これにより、この不一致が回避され、移植性も向上します。

于 2012-11-16T10:59:52.443 に答える
1

ディスク(Macの場合)のサイズとスクリプトサイズの変換を比較している可能性があります。ディスク上のサイズは、ハードドライブのパーティションブロックサイズによって異なります。

実際のサイズが417.81KBで、ブロックサイズが200 KB(これは実際の例ではありません)である場合、ディスク上のサイズは600KBになります。

ディスク上のサイズは、ファイルの実際のサイズではなく、ディスク上のファイルが占めるサイズです。

これがお役に立てば幸いです。

于 2012-11-15T11:40:05.577 に答える
0

違いは回心によるもののようです。あなたは1KB= 1024 Bを実行し、Macは1KB =1000Bを実行するようです。

于 2012-11-15T11:32:42.630 に答える