formaters.c 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #include <stdio.h>
  2. void PrintTime(size_t duration) {
  3. if (duration > 999999999999) printf("%4.1lf""d", 1.*duration/86400000000);
  4. else if (duration > 99999999999) printf("%4.1lf""h", 1.*duration/3600000000);
  5. else if (duration > 9999999999) printf("%4.2lf""h", 1.*duration/3600000000);
  6. else if (duration > 999999999) printf("%4.1lf""m", 1.*duration/60000000);
  7. else if (duration > 99999999) printf("%4.2lf""m", 1.*duration/60000000);
  8. else if (duration > 9999999) printf("%4.1lf""s", 1.*duration/1000000);
  9. else if (duration > 999999) printf("%4.2lf""s", 1.*duration/1000000);
  10. else if (duration > 999) printf("%3lu""ms", duration/1000);
  11. else printf("%3lu""us", duration);
  12. }
  13. void PrintNumber(size_t num) {
  14. if (num > 999999999999999999) printf("%3lue", num/1000000000000000000);
  15. else if (num > 999999999999999) printf("%3lup", num/1000000000000000);
  16. else if (num > 999999999999) printf("%3lut", num/1000000000000);
  17. else if (num > 999999999) printf("%3lug", num/1000000000);
  18. else if (num > 999999) printf("%3lum", num/1000000);
  19. else if (num > 9999) printf("%3luk", num/1000);
  20. else printf("%4lu", num);
  21. }
  22. void PrintSize(size_t num) {
  23. if (num >= 112589990684263) printf("%4.1lf PB", 1.*num/1125899906842624);
  24. else if (num >= 109951162778) printf("%4.1lf TB", 1.*num/1099511627776);
  25. else if (num >= 107374183) printf("%4.1lf GB", 1.*num/1073741824);
  26. else if (num >= 1048576) printf("%4lu MB", num/1048576);
  27. else if (num >= 1024) printf("%4lu KB", num/1024);
  28. else printf("%5lu B", num);
  29. }
  30. void PrintPercent(size_t num, size_t total) {
  31. if (num >= total) printf(" 100");
  32. else printf("%4.1lf", 100.*num/total);
  33. }
  34. char *GetPrintSize(char *str, size_t size) {
  35. if (size >= 1073741824) sprintf(str, "%.1lf GB", 1.*size / 1073741824);
  36. else if (size >= 1048576) sprintf(str, "%.1lf MB", 1.*size / 1048576);
  37. else if (size >= 1024) sprintf(str, "%lu KB", size / 1024);
  38. else sprintf(str, "%lu B ", size);
  39. return str;
  40. }