我尝试编写一个扩展方法来接收ulong并返回一个字符串,该字符串以十六进制格式表示提供的值,没有前导零。我对我提出的建议并不满意......使用标准.NET库是不是有更好的方法呢?
public static string ToHexString(this ulong ouid)
{
string temp = BitConverter.ToString(BitConverter.GetBytes(ouid).Reverse().ToArray()).Replace("-", "");
while (temp.Substring(0, 1) == "0")
{
temp = temp.Substring(1);
}
return "0x" + temp;
}
答案 0 :(得分:17)
解决方案实际上非常简单,而不是使用各种怪癖将数字格式化为十六进制,您可以深入研究NumberFormatInfo类。
您的问题的解决方案如下......
return string.Format("0x{0:X}", temp);
虽然我不会为此用途制作扩展方法。
答案 1 :(得分:4)
答案 2 :(得分:1)
在C#6中,您可以使用字符串插值:
$"0x{variable:X}"
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated