StrFormatByteSize (shlwapi)
Last changed: FallenGameR-75.165.13.109

.
Summary
Converts a numeric value into a string that represents the number expressed as a size value in bytes, kilobytes, megabytes, or gigabytes, depending on the size. It's the same format as the Windows Explorer.

C# Signature:

[DllImport ( "Shlwapi.dll", CharSet = CharSet.Auto )]
public static extern long StrFormatByteSize (
        long fileSize
        , [MarshalAs ( UnmanagedType.LPTStr )] StringBuilder buffer
        , int bufferSize );

VB Signature:

<System.Runtime.InteropServices.DllImport("shlwapi", CharSet:=System.Runtime.InteropServices.CharSet.Auto)> _
Private Shared Function StrFormatByteSize
        (
         ByVal fileSize As Long, _
         ByVal buffer As Text.StringBuilder, _
         ByVal bufferSize As Integer
        ) As Long
End Function

User-Defined Types:

None.

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

C#

/// <summary>
/// Converts a numeric value into a string that represents the number expressed as a size value in bytes, kilobytes, megabytes, or gigabytes, depending on the size.
/// </summary>
/// <param name="filelength">The numeric value to be converted.</param>
/// <returns>the converted string</returns>
public static string StrFormatByteSize (long filesize) {
     StringBuilder sb = new StringBuilder( 11 );
     StrFormatByteSize( filesize, sb, sb.Capacity );
     return sb.ToString();
}

VB

''' <summary>
''' Returns a string representation of a number of bytes (ie. 524288 = "512Kb")
''' </summary>
Private Function fnFileSize( ByVal size As Long ) As String
     Dim sb As New Text.StringBuilder( 20 )
     StrFormatByteSize( size, sb, sb.Capacity )
     Return sb.ToString()
End Function        

Documentation