Files
libucore/src/human_bytesz.c
T
2013-11-19 11:33:43 +01:00

44 lines
1.5 KiB
C

#include <stdio.h>
#include <inttypes.h>
#include "ucore/string.h"
char *
uc_human_bytesz_dec(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;
}
char *
uc_human_bytesz_bin(uint64_t bytes, char *result, size_t result_len)
{
if (bytes < 1024) {
snprintf(result, result_len, "%" PRIu64 " b", bytes);
} else if (bytes < 1048576) {
snprintf(result, result_len, "%.2f KiB", bytes/1024.0);
} else if (bytes < 1073741824ULL) {
snprintf(result, result_len, "%.2f MiB", bytes/1048576.0);
} else if (bytes < 1099511627776ULL) {
snprintf(result, result_len, "%.2f GiB", bytes/1073741824.0);
} else if (bytes < 1125899906842624ULL) {
snprintf(result, result_len, "%.2f TiB", bytes/1099511627776.0);
} else {
snprintf(result, result_len, "%.2f PiB", bytes/1125899906842624.0);
}
return result;
}