gpt4 book ai didi

c# - IFormattable.ToString 无法按预期进行十六进制格式化

转载 作者:行者123 更新时间:2023-11-30 12:24:33 24 4
gpt4 key购买 nike

String.Format 和 IFormattable.ToString(format, value) 在尝试格式化为十六进制时提供不同的结果。使用 IFormattable.ToString(format, value) 时如何获得正确的结果

string format = "0x{0:X4}";
Console.WriteLine(string.Format(format, 255)); //prints- 0x00FF

IFormattable formattableValue = (IFormattable)255;
Console.WriteLine(formattableValue.ToString(format, null)); //prints- 25x{5:X4}

最佳答案

格式化字符串的格式对于 string.Format()ToString() 是不同的。特别是,string.Format() 允许在格式周围使用其他文本,而 IFormattable.ToString() 只允许文本本身的格式说明符。

在您的示例中,格式字符串 "0x{0:X4}" 被视为值 255 的整个格式说明符。0 是占位符数字,其余只是额外的字 rune 字。

如果您希望 IFormattable.ToString() 输出与 string.Format() 相同的结果,您必须以等效的方式使用它:

"0x" + formattableValue.ToString("X4", null);

关于c# - IFormattable.ToString 无法按预期进行十六进制格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33771524/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com