Files
libucore/src/human_bytesz.c
T
2013-03-06 22:22:04 +01:00

25 lines
778 B
C

#include <stdio.h>
#include <inttypes.h>
#include "ucore/string.h"
char *
uc_human_bytesz(uint64_t bytes, char *result, size_t result_len)
{
if (bytes < 1000) {
snprintf(result, result_len, "%" PRIu64 " b", bytes);
} else if (bytes < 1000000) {
snprintf(result, result_len, "%.2f kB", bytes/1000.0);
} else if (bytes < 1000000000ULL) {
snprintf(result, result_len, "%.2f MB", bytes/1000000.0);
} else if (bytes < 1000000000000ULL) {
snprintf(result, result_len, "%.2f GB", bytes/1000000000.0);
} else if (bytes < 1000000000000000ULL) {
snprintf(result, result_len, "%.2f TB", bytes/1000000000000.0);
} else {
snprintf(result, result_len, "%.2f PB", bytes/1000000000000000.0);
}
return result;
}