2016-03-04 3 views
0

Я пытаюсь читать из файла, который структурирован как таковые: VariableName:14326A6AC Value:Long Value:LongЧтение Долгого из файла После Синтаксического [C#]

Я пытаюсь прочитать это делает его, как указано ниже, но я получаю формат ошибки. Когда я добавляю форматирование для шестнадцатеричного (формат, в котором находятся longs), они преобразуются в десятичные. Есть ли способ сохранить их как долго, поэтому мне не нужно делать длинное преобразование из десятичного в шестнадцатеричное?

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

Добавить точку останова при * возврате Int64.Parse (s [1]); * и проверить содержимое s, это не должно быть число. – Gusman

+0

Можете ли вы предоставить образец ввода (жало)? –

+0

@DavitTvildiani Я добавил точный ввод, который не работает. s [1] = 14326A6AC – FineNerds

ответ

4

Это то, что вам нужно:

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

16 является базой 16 (шестнадцатеричное). Эта функция преобразует из шестнадцатеричной строки в длинную.

+0

Спасибо. Есть ли способ сохранить его в шестнадцатеричной форме? Он возвращает 5421573804 вместо 14326A6AC. – FineNerds

+0

Вы можете сохранить эту форму только в том случае, если она является строкой. Это преобразует число в шестнадцатеричную форму: 'long k = 5421573804; string hex = 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) 
Смежные вопросы