将KB转换为MB?

时间:2010-09-28 19:39:54

标签: vb.net

请查看此帖的底部,以便更新。

我有以下代码搜索目录并显示目录中的最大文件。问题是它以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

应该让我自己更清楚!我知道如何将KB转换为MB但不知道我如何将其纳入我的代码 - 我是否为STRMAX添加了另一个变量/1024..EXCEPT我已经有了STRMAX VARIABLE ......仍然是一个非常多的初学者GUYS。

我知道如何将KB转换为MB - 问题是如何将其合并到我的代码中?我是否添加了另一个变量

5 个答案:

答案 0 :(得分:5)

(抱歉上一个回答是1024,错误的假设)

关于从kB转换为MB的问题,您肯定可以通过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&你的文件大小是以字节为单位,而不是kB)

答案 1 :(得分:3)

除以1000?

重新:我如何将其纳入我的代码 - 我是否添加另一个变量

如果需要,可以添加另一个变量,进行调试会更容易。只要给它一个新名字。你也可以进行内联划分(参见@KevinDTimm的解决方案)。

答案 2 :(得分:0)

我只想说strMax = objFileInfo.FullName & ' ' & (dblSize / 1024) & 'MB'

(抱歉语法,我还没有在> 10年内完成VB)

答案 3 :(得分: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

答案 4 :(得分: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

这会将其转换为MB,主要用于下载。

由于人们喜欢adv方式,这是简单/简单的方式;)