#include #include #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; }