我創建做單位轉換一類,特別字節來千字節,兆字節,千兆字節,等等。我與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'和按位操作符'^'。 –