0

所以我正在将字符串转换为十六进制值表示并且错误地而不是写作 ToString("X0")

我写

ToString("X100")

var t="123";
for (int i=0;i<t.Length;i++)
{
     Console.WriteLine( ((int)t[i]).ToString("X100"));
}

值为:

X149
X150
X151

ps:

ToString("X10")产量:

0000000031
0000000032
0000000033

ToString("X99")产量:(与许多零相同)

但是当像 100 , 1000 , 10000 .... 一样跳跃时,它会产生 somwthingX

这个 X 表示是什么?X149例如...?

4

1 回答 1

4

对于xX格式说明符,与所有标准数字格式一样,您最多只能请求 99 位数字。一旦您尝试要求更多,您将不再拥有标准格式说明符,而是自定义格式说明符。

在自定义格式说明符中,“0”表示在原始数字中包含一个数字,其他所有内容都保持不变。

所以:

19.ToString("X8") = "00000013"
19.ToString("X99") = "0000...0013" // 99 digits
19.ToString("X100") = "X119"; // "X1" + 19.ToString("00")
19.ToString("X101") = "X1191" // "X1" + 19.ToString("0") + "1"
29.ToString("X1010") = "X1219" // "X1" + 2.ToString("0") + "1" + 9.ToString("0")

等等

(解释最后一个:每个 0 代表正在格式化的数字中的下一个数字;第一个 0 被 2 替换,第二个 0 被 9 替换。这些很快就变得非常棘手。)

于 2012-11-09T19:50:37.743 回答