25 lines
777 B
C
25 lines
777 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;
|
|
}
|
|
|