代码:C#:将ulong转换为十六进制字符串

代码:C#:将ulong转换为十六进制字符串,c#,hex,C#,Hex,我尝试编写一个扩展方法,以接收一个ulong并返回一个字符串,该字符串以十六进制格式表示提供的值,不带前导零。我对我的想法不是很满意。。。使用标准的.NET库是否有更好的方法来实现这一点 public static string ToHexString(this ulong ouid) { string temp = BitConverter.ToString(BitConverter.GetBytes(ouid).Reverse().ToArray()).Replace("-", ""

我尝试编写一个扩展方法,以接收一个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;
}

解决方案实际上非常简单,而不是使用各种各样的怪癖将数字格式化为十六进制,您可以深入到类中

你的问题的解决办法如下

return string.Format("0x{0:X}", temp);

尽管我不会为此使用创建扩展方法。

您可以使用string.format:

string.Format("0x{0:X4}",200);
查看有关格式化输出的更全面的“操作方法”。

在C#6中,可以使用字符串插值:

$“0x{variable:X}”


比我快:o)还有,我找到了这个。类似的问题:哈哈,太棒了。返回“0x”+ouid.ToString(“x”).ToUpper();我将提供帮助…因此您可以跳过所有位转换器等。返回string.Format(“0x{0:x}”,temp);如果你想为此写一个扩展(我不会):不需要ToUpper()…只需要我们X而不是X matey:)@Ardman,这很有趣。。。在我所有的谷歌搜索中,我从来没有真正搜索过“ulong to hex”,我一直在所有搜索中输入UInt64。谷歌需要同义词搜索。