如何在C#中显示带符号的三字节十六进制输出?

时间:2015-09-06 20:35:21

标签: c# formatting hex signed

我想在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 个答案:

答案 0 :(得分:2)

负数的前导位是重要,因此您无法使用String.Format切断关闭(没有说明符可以忽略有效数字,宽度仅指定最小尺寸和左/右对齐)。

您可以将值转换为3字节uint,以便按照您希望的方式打印它们:

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