2015-09-06 17 views
1

我想在C#中顯示三個字節(有符號)。如何在C#中顯示簽名的三個字節的十六進制輸出?

代碼(片段)我提出的是:

case 3: 
    HexadecimalValueRange = SignedValueChecked ? 
    string.Format("{0:X6}..{1:X6}", (Int32) minValue, (Int32) maxValue) 
    : string.Format("{0:X6}..{1:X6}", (UInt32)minValue, (UInt32)maxValue); 

但它顯示的一實例負的值作爲0xFFC00000其中我想看到0xC000000,所以用6「顯著」位數(從而沒有前導FF )。

+1

根據[標準數字格式字符串(https://msdn.microsoft.com/en-us /library/dwhawy9k%28v=vs.110%29.aspx#XFormatString)中,精度說明符*表示結果字符串中所需的**最小**數字數目*不是最大數字,也不會請鉗制數字,如下例所示:'123456789.ToString(「X2」)//顯示75BCD15'。嘗試[如何強制數字在C#中的範圍?](http://stackoverflow.com/questions/3176602/how-to-force-a-number-to-be-in-a-range-in相反)。 – dbc

+0

@dbc:我知道這是最小位數,但是鉗位該值仍然會導致前導FF值。 –

回答

2

負數的領先位顯著,所以你不能切斷與String.Format關閉(沒有說明符,讓你忽略顯著數字,寬度僅規定最小尺寸和左/右對齊)。

您可以將值轉換爲3個字節的uint打印他們你想要的方式:

string.Format("{0,-6:X}",(uint)(int.MaxValue & 0xFFFFFF)) 
相關問題