我遇到了一个代码。任何人都可以对此有所了解。如果有人觉得它有点基本,请善待。
string str= String.Format("{0,2:X2}", (int)value);
感谢您的时间。
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)
将打印带有至少一个符号的第一个数字,第二个带有至少两个符号的数字,然后再次打印带有至少四个符号的第一个数字。如果结果字符串中的符号数量较少 - 它们将由空格填充。
{0,2:X2}
它分为
0,2
- 将数字格式化10
为10
X2
- 将数字格式化10
为十六进制值0A
。代码
String.Format("{0,2:X2}", (int)value); // where value = 10
结果: 0A
现场示例:http: //ideone.com/NW0U26
我的结论
你可以在这里更改"{0,2:X2}"
为"{0:X2}"
,现场示例。
参考链接:MSDN
根据 MSDN,格式字符串具有以下格式:
{index[,alignment][:formatString]}
我们可以在您的格式字符串中找到所有这些组件(最后两个是可选的):
0
是要使用的参数的索引。
,2
是对齐部分,如果结果比这短,则用空格填充。
:X2
是formatString部分。这意味着该数字将被格式化为十六进制(大写)格式,最小宽度为 2。如果生成的数字少于 2 位,则在左侧填充零。
在这种特定情况下,对齐说明符是多余的,因为X2
已经指定了最小宽度为 2。