【发布时间】:2017-09-16 07:44:24
【问题描述】:
现在,String.Format 在将零格式化为十六进制字符串时遇到了一个奇怪的问题。请看下面的例子:
public override string ToString()
{
return $"{{{LowPart:X}-{HighPart.ToString("X")}}}";
}
上面的代码在HighPart 为零的情况下可以正常工作,但以下两个给我一个错误的结果:
public override string ToString()
{
return $"{{{LowPart:X}-{HighPart:X}}}";
}
public override string ToString()
{
return string.Format("{{{0:X}-{1:X}}}", LowPart, HighPart);
}
例如,LowPart 为 50,HighPart 为 0,这两者都将返回 "{32-X}" 而不是 "{32-0}"。
我不知道发生这种情况的“原因”。我也尝试用谷歌搜索它并没有找到答案。所以我来看看是否有人对此有所了解。
顺便说一句,我正在使用 VS2015 和 .Net4.5
编辑:原来问题在于字符串中的结尾}}。不过对我来说还是很奇怪。
似乎是格式化引擎中的一个错误,就像我在中间添加一个空格一样,它会起作用。点赞:$"{{{LowPart:X}-{HighPart:X} }}"
【问题讨论】:
标签: c# hex string-formatting