我创建做单位转换一类,特别字节来千字节,兆字节,千兆字节,等等。我与B
一个enum
通过PB
,但由于某些原因1024^0
不返回1
,它不是正确地从字节转换为字节或字节为千字节等X不计算为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)
我不知道这是否是与铸造enum
到int
或者如果有什么问题引发一个int
时的int
并将其分配给一个long
丢失,但是这是奇怪的行为。
感谢您指出这一点。我不确定我是如何混淆了'Math.Pow'和按位操作符'^'。 –