我创建了一个用于进行单位转换的类,特别是字节到千字节、兆字节、千兆字节等。我有一个enum
with B
through PB
,但由于某种原因1024^0
没有返回1
,并且它没有正确地从字节转换为字节或字节到千字节等。
这是我的课:
public static class UnitConversion
{
/// <summary>
/// 1024^n
/// </summary>
public enum ByteConversionConstant
{
B = 0,
KB = 1,
MB = 2,
GB = 3,
TB = 4,
PB = 5
}
public static string GetValueFromBytes(long bytes,
ByteConversionConstant constant)
{
int n = (int)constant;
long divisor = 1024^n;
return (bytes / divisor).ToString() +
Enum.GetName(typeof(ByteConversionConstant), constant);
}
}
下面的语句应该返回与 完全相同的值fileInfo.Length
,但由于1024^0
没有返回1
,它显示的是千字节数。请注意,我将GetValueFromBytes
方法全部放在一行中,但我将其分开以查看可能导致错误计算的原因。
UnitConversion.GetValueFromBytes(fileInfo.Length,
UnitConversion.ByteConversionConstant.B)
我不确定将 a 转换enum
为 an是否存在问题,或者在将 an 提升到 an并将其分配给 aint
时是否会丢失某些内容,但这是一种奇怪的行为。int
int
long