ByteConvertUtils.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. //************************************************************************
  2. // https://github.com/yuzhengyang
  3. // author: yuzhengyang
  4. // date: 2017.5.18 - 2017.6.10
  5. // desc: 计算机字节单位转换工具
  6. // Copyright (c) yuzhengyang. All rights reserved.
  7. //************************************************************************
  8. using System;
  9. namespace Y.Utils.DataUtils.UnitConvertUtils
  10. {
  11. /// <summary>
  12. /// 计算机字节单位转换工具
  13. /// </summary>
  14. public class ByteConvertTool
  15. {
  16. /// <summary>
  17. /// 自动格式化字节单位
  18. /// </summary>
  19. /// <param name="size"></param>
  20. /// <param name="digits"></param>
  21. /// <returns></returns>
  22. public static string Fmt(long size, int digits = 2)
  23. {
  24. string rs = "";
  25. if (size > 1024 * 1024 * 1024)
  26. {
  27. rs = Math.Round((double)size / 1024 / 1024 / 1024, digits) + " GB";
  28. }
  29. else if (size > 1024 * 1024)
  30. {
  31. rs = Math.Round((double)size / 1024 / 1024, digits) + " MB";
  32. }
  33. else if (size > 1024)
  34. {
  35. rs = Math.Round((double)size / 1024, digits) + " KB";
  36. }
  37. else
  38. {
  39. rs = size + " B";
  40. }
  41. return rs;
  42. }
  43. /// <summary>
  44. /// 自动格式化字节单位
  45. /// </summary>
  46. /// <param name="size"></param>
  47. /// <param name="digits"></param>
  48. /// <returns></returns>
  49. public static string Fmt(double size, int digits = 2)
  50. {
  51. string rs = "";
  52. if (size > 1024 * 1024 * 1024)
  53. {
  54. rs = Math.Round(size / 1024 / 1024 / 1024, digits) + " GB";
  55. }
  56. else if (size > 1024 * 1024)
  57. {
  58. rs = Math.Round(size / 1024 / 1024, digits) + " MB";
  59. }
  60. else if (size > 1024)
  61. {
  62. rs = Math.Round(size / 1024, digits) + " KB";
  63. }
  64. else
  65. {
  66. rs = size + " B";
  67. }
  68. return rs;
  69. }
  70. /// <summary>
  71. /// 根据单位换算
  72. /// </summary>
  73. /// <param name="size"></param>
  74. /// <param name="unit"></param>
  75. /// <param name="digits"></param>
  76. /// <returns></returns>
  77. public static double Cvt(long size, string unit, int digits = 2)
  78. {
  79. double rs = 0;
  80. switch (unit)
  81. {
  82. case "B": rs = size; break;
  83. case "KB": rs = (double)size / 1024; break;
  84. case "MB": rs = (double)size / 1024 / 1024; break;
  85. case "GB": rs = (double)size / 1024 / 1024 / 1024; break;
  86. default: rs = size; break;
  87. }
  88. return Math.Round(rs, digits);
  89. }
  90. /// <summary>
  91. /// 根据单位换算
  92. /// </summary>
  93. /// <param name="size"></param>
  94. /// <param name="unit"></param>
  95. /// <param name="digits"></param>
  96. /// <returns></returns>
  97. public static double Cvt(double size, string unit, int digits = 2)
  98. {
  99. double rs = 0;
  100. switch (unit)
  101. {
  102. case "B": rs = size; break;
  103. case "KB": rs = size / 1024; break;
  104. case "MB": rs = size / 1024 / 1024; break;
  105. case "GB": rs = size / 1024 / 1024 / 1024; break;
  106. default: rs = size; break;
  107. }
  108. return Math.Round(rs, digits);
  109. }
  110. }
  111. }