在C#中转换十六进制值

时间:2017-02-13 12:25:30

标签: c# hex

我正在尝试将两位十六进制值显示为16位十六进制值。即 value = 81进入0x0000000000000081。我已经完成了以下代码:

public long GetHexNumber(long d)
    {

        return long.Parse(d.ToString("X"), System.Globalization.NumberStyles.HexNumber);

    }

但上面的代码返回相同的十六进制值,即81。请帮助

2 个答案:

答案 0 :(得分:0)

像这样使用Int64.ToString()

    public string GetHexNumber(long d)
    {
        return d.ToString("X16");
    }

X ...用于转换为hexString

16 ...将其转换为16位数字符串

如果你想让它有一个领先的" 0x"将其更改为:

    return "0x" + d.ToString("X16");

答案 1 :(得分:0)

让我们首先提供一个好的测试示例,我们想要

  1. 有一个整数(例如81
  2. 对待就好像它不是十进制,而是十六进制0x81(我们机械地添加0x
  3. 获取其值(0x81 == 129
  4. 这样的事情:

     Value -> 0xValue 
    

    如果是您的情况,解决方案可以是

     // static: we don't have any need in "this" instance
     public static long GetHexNumber(long value) {
       return Convert.ToInt64(value.ToString(), 16);
     } 
    

    测试

     long test = 81;
    
     Console.WriteLine(81);
     // C# 6.0+ string interpolating
     // if don't use C# 6.0, put it as formatting: 
     // Console.WriteLine("{0:X16}", GetHexNumber(test)); 
     Console.WriteLine($"{GetHexNumber(test):X16}");