NAME
humanize_number,
format_bytes —
human readable numbers
SYNOPSIS
int
humanize_number(
char
*buf,
size_t len,
uint64_t number,
const char *suffix,
int divisor);
int
format_bytes(
char
*buf,
size_t len,
uint64_t number);
DESCRIPTION
The
humanize_number() function formats the unsigned 64-bit
quantity given in
number into
buf.
A space and then
suffix is appended to the end. The
supplied
buf must be at least
len
bytes long.
If the formatted number (including
suffix) is too long to
fit into
buf,
humanize_number()
divides
number by
divisor until it
will fit. In this case,
suffix is prefixed with the
appropriate SI designator. Suitable values of
divisor
are 1024 or 1000 to remain consistent with the common meanings of the SI
designator prefixes.
The prefixes are:
Prefix |
Description |
Multiplier |
k |
kilo |
1024 |
M |
mega |
1048576 |
G |
giga |
1073741824 |
T |
tera |
1099511627776 |
P |
peta |
1125899906842624 |
E |
exa |
1152921504606846976 |
The
len argument must be at least 4 plus the length of
suffix, in order to ensure a useful result in
buf.
The
format_bytes() function is a front-end to
humanize_number(). It calls the latter with a
suffix of “B”. Also, if the suffix in the
returned
buf would not have a prefix, the suffix is
removed. This means that a result of “100000” occurs, instead of
“100000 B”.
RETURN VALUES
Both functions return the number of characters stored in
buf (excluding the terminating NUL) upon success, or -1
upon failure.
SEE ALSO
humanize_number(3)
HISTORY
These functions first appeared in
NetBSD 1.5.