2016-03-04 66 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)