2010-09-28 9 views
4

ПОСМОТРЕТЬ ЭТОТ ПОЧТУ ДЛЯ ОБНОВЛЕНИЯ НА ЭТОМ ПОЖАЛУШЕ.Конвертировать KB в MB?

У меня есть код ниже, который выполняет поиск по каталогам и отображает самый большой файл в каталоге. проблема в том, что он отображает его в KB - как я могу преобразовать его в MB? Размер файла выходит слишком большой так хочется легкое чтением - спасибо за помощь:

Private Sub btnGetMax_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGetMax.Click 
    ClearList() 

    Dim dblSize As Integer = 0 
    Dim dblMax As Integer = 0 
    Dim strMax As String = "" 

    Dim objFileInfo As System.IO.FileInfo 

    For Each strFile As String In My.Computer.FileSystem.GetFiles("c:\temp", FileIO.SearchOption.SearchAllSubDirectories) 

     objFileInfo = My.Computer.FileSystem.GetFileInfo(strFile) 
     /*whats the size of the files?*/ 
     dblSize = objFileInfo.Length 

     If dblSize > dblMax Then 
      dblMax = dblSize 
      strMax = objFileInfo.FullName 
     End If 
    Next 

    MessageBox.Show("Largest file in .Net folder is " & vbCrLf & 
        strMax & vbCrLf & 
        dblMax.ToString("N0")) 
End Sub 

ДОЛЖЕН СДЕЛАЛ СЕБЕ БОЛЬШЕ ОЧИСТИТЬ! Я ЗНАЮ, КАК СДЕЛАТЬ КБ К МБ, НО НЕТ ИДЕИ, КАК Я ВСТАВЛЯЮСЬ, ЧТО В МОЙ КОД - Я ДОБАВЛЯЮ ДРУГОЙ ПЕРЕМЕННЫЙ ДЛЯ STRMAX AS/1024.EXCEPT У меня УЖЕ ИМЕЕТСЯ STRMAX ПЕРЕМЕНА ..... ВСЕ ЕЩЕ ОЧЕНЬ НАЧИНАЕТСЯ РЕБЯТА.

Я знаю, как конвертировать КБ в МБ - проблема заключается в том, как я могу включить это в свой код? Добавляю ли я другую переменную

+2

Вы не знаете, что 1 МБ = 1024 КБ? –

+1

Это байты, а не KB. – SLaks

+3

По соглашению, это 1024KB или 1048576 байт, если вы говорите об ОЗУ, 1000KB или 1000000 байт, если вы говорите о постоянном хранении. Поскольку это касается каталогов, кажется, что ответ на базовый 10 более уместен. –

ответ

5

(Извините за предыдущий ответ с 1024, ошибочное предположение)

К вашему вопросу о преобразовании кбайт в МБ, то можно с уверенностью предположить стандартом SI:

1 MB = 1000 kB 

Ergo, разделите на 1000.

Для неубежденных я рекомендую вам прочитать this.

Поскольку программное обеспечение, как Microsoft Windows количества expresses хранения в упаковке 1024 байт, измените код на:

dblMax = dblMax/(1024*1024) 

    MessageBox.Show("Largest file in .Net folder is " & vbCrLf & 
    strMax & vbCrLf & 
    dblMax.ToString("N0")) 

(так как вы печатаете dblMax & размера файла в байтах, а не кБ)

+1

спасибо за это - должен был сделать себя более ясным! Я знаю, как конвертировать KB в MB - проблема в том, как я могу включить это в свой код? Добавляю ли я еще одну переменную для strMax как/1024? – lara400

+0

блестящий! Спасибо за это!! – lara400

3

Разделить на 1000?

Re: Как я включить это в мой код - добавить еще одну переменную

вы можете добавить еще одну переменную, если вы хотите, это будет легче сделать отладку. Просто дайте ему новое имя. Вы также можете выполнить деление inline (см. Решение @KevinDTimm).

+3

To downvoters: Собственно, он прав. 'kb' означает' kilobyte', что означает 1000 байтов ... в то время как 'kib' означает' kibibyte', что означает 1024 байта. Это норма ISO. – Bobby

+2

За исключением того, что многие люди вряд ли следуют новой схеме именования, и вам обычно нужно ожидать как 1000-base, так и преобразования на основе 1024. Кроме того, некоторые люди делают разницу между 'kb' и' KB'. – poke

+0

@ poke: К сожалению, это не новая схема ... это корни, начиная с 1996 года. – Bobby

0

я бы просто сказать strMax = objFileInfo.FullName & ' ' & (dblSize/1024) & 'MB'

(извините о синтаксисе, я не сделал VB в> 10 лет)

0
Enum xByte As Long 
    kilo = 1024L 
    mega = 1024L * kilo 
    giga = 1024L * mega 
    tera = 1024L * giga 
End Enum 


Private Sub Button1_Click(ByVal sender As System.Object, _ 
          ByVal e As System.EventArgs) Handles Button1.Click 

    For x As Integer = 2 To 4 
     Debug.WriteLine("") 
     Dim d As Double = 1024^x 

     Debug.WriteLine(String.Format("{0} bytes ", d.ToString("n0"))) 

     Debug.WriteLine(String.Format("{0} KB ", (d/xByte.kilo).ToString("n3"))) 
     Debug.WriteLine(String.Format("{0} MB ", (d/xByte.mega).ToString("n3"))) 
     Debug.WriteLine(String.Format("{0} GB ", (d/xByte.giga).ToString("n3"))) 
     Debug.WriteLine(String.Format("{0} TB ", (d/xByte.tera).ToString("n3"))) 
    Next 

End Sub 
0

Поместите это в начало документа.

Dim imin As Integer 'Bytes 
Dim imax As Integer 'Bytes 
Dim imin1 As Integer 'Kb 
Dim imax1 As Integer 'kb 

Затем попробуйте переименовать материал в соответствии с вашим.

Private Sub WC_DownloadProgressChanged(sender As Object, e As System.Net.DownloadProgressChangedEventArgs) Handles WC.DownloadProgressChanged 

    Try 
     imin = e.BytesReceived/1024 'Bytes converted to KB 
     imax = e.TotalBytesToReceive/1024 'Bytes converted to KB 
     imin1 = imin/1024 'Converts to MB 
     imax1 = imax/2014 'Converts to MB 
    Catch ex As Exception 

    End Try 

    Try 
     ProgressBar1.Maximum = e.TotalBytesToReceive 
     ProgressBar1.Value = e.BytesReceived 
     Label1.Text = imin1 & "MB of " & imax1 & "MB" 
    Catch ex As Exception 

    End Try 
End Sub 

Это преобразует его в МБ, который в основном используется для загрузки.

Поскольку люди, как ADV образом, это легко/простой способ;)

Смежные вопросы