• ベストアンサー

バイトをGBにするには?

Sub FSO() Dim myFSO As Scripting.FileSystemObject Set myFSO = New Scripting.FileSystemObject Debug.Print myFSO.Drives.Item("C").TotalSize & "バイト" End Sub でバイトで容量を取得できるのですが、 単位をGBにするにはどうすればいいですか? Debug.Print myFSO.Drives.Item("C").TotalSize / 1024000000 & "GB" これであってるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

>1000*1000*1000でGとするか、1024*1024*1024でGとするかのどちらかです 当然ですよね。もともとの意味がわかっていれば、そうなるはずなんですが。

vmjvyhrvl6
質問者

お礼

どうもありがとうございました。

その他の回答 (1)

  • mitoneko
  • ベストアンサー率58% (469/798)
回答No.1

 慣習と、規約が入り交じり、とてもややこしい状態になっているのが、この2進数の補助単位の扱いです。  本来、K・M・G・Tという補助単位は10進数を基本としているので、素直に、1000倍づつしていくのが正しい姿です。  でも、2進数を扱う「バイト」にこれを適用する時に、2の10乗の1024を掛けていく慣習がありました。この場合は、補助単位が一つ上がる毎に、1024倍することになります。1GBだと、1024*1024*1024バイトです。  ただしい、単位として、1024倍を基礎とする単位系には、「キビバイト」(KiB)・「メビバイト」(MiB)・「ギビバイト」(GiB)とするIECの規定もあるのですが、あまり知られてはいません。  そのため、K・M・G・Tを1000倍としてみるか1024倍としてみるかは、渾然として入り交じっているのが実情です。  ただ、乗率を1024にするのか、1000にするのかはどちらか一つに統一してください。1024*1000*1000というのはあり得ません。1000*1000*1000でGとするか、1024*1024*1024でGとするかのどちらかです。(実は、こういう単位系が混乱した使い方をしている事例も多いです。が、明らかにおかしいです。)  どちらを選択するかは、あなたが作っておられるソフトを使う人・環境が、どちらの単位系を使っているかを見て決めてください。

vmjvyhrvl6
質問者

お礼

どうもありがとうございました。