5

我遇到了一个代码。任何人都可以对此有所了解。如果有人觉得它有点基本,请善待。

string str= String.Format("{0,2:X2}", (int)value);

感谢您的时间。

4

3 回答 3

13

X格式返回value.

例如String.Format("{0:X}", 10)将返回"A",而不是"10"

X2如果您的十六进制表示少于两个符号,将在左侧添加

例如String.Format("{0:X2}", 10)将返回"0A",而不是"A"

0,2如果生成的符号数小于 2,将在左侧添加空格。

例如String.Format("{0,3:X2}", 10)会返回" 0A",但不会"0A"

因此,这种格式{0,2:X2}将以十六进制表示法返回您的值,如果它只有一个符号,则从左侧附加一个零,如果是一个符号,则从左侧附加空格。多次阅读后,您可以看到,这是多余的,并且可以在不改变行为的情况下将,2这种格式简化为。{0:X2}

一些注意事项:

:分隔索引号和应用于该对象的特定格式。例如这段代码

String.Format("{0:X} {1:N} {0:N}", 10, 20)

显示,我想以10十六进制格式化(索引 0),然后以数字方式显示20(索引 1),然后10以数字方式格式化(索引 0)。

0,2从半列的左侧部分指示索引位置0和格式,2应用于结果字符串,而不是特定对象。所以这段代码

String.Format("{0,1} {1,2} {0,4}", 10, 20)

将打印带有至少一个符号的第一个数字,第二个带有至少两个符号的数字,然后再次打印带有至少四个符号的第一个数字。如果结果字符串中的符号数量较少 - 它们将由空格填充。

于 2013-03-28T13:48:24.130 回答
6
{0,2:X2}

它分为

  1. 0,2- 将数字格式化1010
  2. X2- 将数字格式化10为十六进制值0A

更新

代码

String.Format("{0,2:X2}", (int)value); // where value = 10

结果: 0A

现场示例:http: //ideone.com/NW0U26

我的结论
你可以在这里更改"{0,2:X2}""{0:X2}"现场示例

参考链接:MSDN

于 2013-03-28T13:47:01.430 回答
2

根据 MSDN,格式字符串具有以下格式:

{index[,alignment][:formatString]}

我们可以在您的格式字符串中找到所有这些组件(最后两个是可选的):

0是要使用的参数的索引
,2对齐部分,如果结果比这短,则用空格填充。
:X2formatString部分。这意味着该数字将被格式化为十六进制(大写)格式,最小宽度为 2。如果生成的数字少于 2 位,则在左侧填充零。

在这种特定情况下,对齐说明符是多余的,因为X2已经指定了最小宽度为 2。

有关格式字符串的更多信息,请参见此处:
复合格式
标准数字格式字符串

于 2013-03-28T13:48:50.197 回答