字节大小转换为文本值描述, 仅显示用...

Posted 黑暗煎饼果子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字节大小转换为文本值描述, 仅显示用...相关的知识,希望对你有一定的参考价值。

看代码...

 

uses
  System.Math;

//  ***************************************************************************
//  字节大小转换为文本值描述
//  刘志林
//  2017-11-06
//  http://www.cnblogs.com/lzl_17948876/
//  lzl_17948876@hotmail.com
//  ***************************************************************************
type
  TBSSM = (BSSM_AUTO, BSSM_B, BSSM_KB, BSSM_MB, BSSM_GB, BSSM_TB, BSSM_PB);

/// <summary>
///   字节大小转换为文本值描述
/// </summary>
/// <param name="AByteSize">
///   字节大小
/// </param>
/// <param name="AMode">
///   转换模式, 默认为BSSM_AUTO, 转换为最合适的描述
/// </param>
/// <param name="ADigit">
///   保留小数位数, 默认2位
/// </param>
/// <returns>
///   字符串描述
/// </returns>
function ByteSizeToStr(AByteSize: UInt64; AMode: TBSSM = BSSM_AUTO; ADigit: UInt8 = 2): string;
const
  _L: array[BSSM_KB .. BSSM_PB] of UInt64 = (
    $400, {KB}
    $100000, {MB}
    $40000000, {GB}
    $10000000000, {TB}
    $4000000000000 {PB}
  );
  _T: array[BSSM_B .. BSSM_PB] of string = (\'B\', \'KB\', \'MB\', \'GB\', \'TB\', \'PB\');
var
  i: TBSSM;
begin
  if AMode = BSSM_AUTO then
  begin
    AMode := BSSM_B;
    for i := Low(_L) to High(_L) do
    begin
      if AByteSize < _L[i] then
        Break;
      AMode := i;
    end;
  end;
  if AMode = BSSM_B then
    Result := IntToStr(AByteSize) + \' B\'
  else
    Result := FloatToStr(RoundTo(AByteSize / _L[AMode], -ADigit)) + \' \' + _T[AMode];
end;

 

以上是关于字节大小转换为文本值描述, 仅显示用...的主要内容,如果未能解决你的问题,请参考以下文章

用于 ScintillaNET 的字节数组到文本

PHP createTextNode() 使用 saveHTML() 仅显示文本

如何将字节转换为mbs,gbs

显示 ActionBar 选项卡的两个片段

web代码片段

HTTP转换为null什么意思?