StrFormatByteSizeA function

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. Differs from StrFormatByteSizeW in one parameter type.


PSTR StrFormatByteSizeA(
  DWORD dw,
  PSTR  pszBuf,
  UINT  cchBuf




The numeric value to be converted.


Type: PSTR

A pointer to a buffer that receives the converted string.


Type: UINT

The size of the buffer pointed to by pszBuf, in characters.

Return Value

Type: PSTR

Returns a pointer to the converted string, or NULL if the conversion fails.


The first parameter of this function has a different type for the ANSI and Unicode versions. If your numeric value is a DWORD, you can use StrFormatByteSize with text macros for both cases. The compiler will cast the numerical value to a LONGLONG for the Unicode case. If your numerical value is a LONGLONG, you should use StrFormatByteSizeW explicitly.

In Windows 10, size is reported in base 10 rather than base 2. For example, 1 KB is 1000 bytes rather than 1024.

The following table illustrates how this function converts a numeric value into a text string.

Numeric value Text string
532 532 bytes
1340 1.30 KB
23506 22.9 KB
2400016 2.28 MB
2400000000 2.23 GB


Minimum supported client Windows 2000 Professional, Windows XP [desktop apps only]
Minimum supported server Windows 2000 Server [desktop apps only]
Target Platform Windows
Header shlwapi.h
Library Shlwapi.lib
DLL Shlwapi.dll (version 4.71 or later)

See Also