2016-03-04 68 views
0

我试图从被构造为这样的文件读取后: VariableName:14326A6AC Value:Long Value:Long读取long从文件中解析[C#]

我想读它做如下所列,但我得到一个格式错误。当我添加十六进制格式(长格式的格式)时,它们被转换为十进制格式。有没有办法让他们保持很长时间,所以我不必做从十进制到十六进制的长转换?

public static long returnLineValue(string lineName) 
     { 
      var lines = File.ReadLines(filePath); 
      foreach (var line in lines) 
      { 
       if (line != null) 
       { 
        char split = ':'; 
        if(line.Contains(lineName)) 
        { 
         string[] s = line.Split(split); 
         return Int64.Parse(s[1]); 
        } 
       } 
      } 
      return 0; 
     } 
+0

在* return Int64.Parse(s [1]); *处添加断点并检查s的内容,它不能是数字。 – Gusman

+0

你能提供输入(sting)样本吗? –

+0

@DavitTvildiani我添加了不能正常工作的确切输入。 s [1] = 14326A6AC – FineNerds

回答

4

这是你所需要的:

return Convert.ToInt64(s[1], 16) 

16为基数为16(十六进制)。此函数从十六进制字符串转换为长整型。

+0

谢谢。有没有办法保持它的十六进制形式?它返回5421573804而不是14326A6AC。 – FineNerds

+0

如果是字符串,则只能保留该表单。这会将数字转换为十六进制格式:'long k = 5421573804;字符串十六进制= k.ToString(“X”);'你会得到'“14326A6AC”' – Sakura

+0

好吧。谢谢:) – FineNerds

0

你必须允许十六进制值Parse:每当你想

... 
// The same Parse but with hexadecimals allowed 
return Int64.Parse(s[1], NumberStyles.AllowHexSpecifier, CultureInfo.InvariantCulture); 
... 

代表十六进制形式Int64,使用格式化

Int64 value = 255; 

    String result = value.ToString("X"); // "X" for hexadeimal, capital letters 

    // "FF" 
    Console.Write(result); 
0

试试这个

return Int64.Parse(s[1],System.Globalization.NumberStyles.HexNumber)