Преобразование строки массива в массив ulong в c # - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть массив строк, имеющих значения

string[] words = {"0B", "00", " 00",  "00",  "00", "07",  "3F",  "14", "1D"}; 

Мне нужно, чтобы он был преобразован в массив ulong

ulong[] words1;  

Как мне это сделать в c #
Я думаю,Я должен добавить немного фона.
Данные в строке поступают из текстового поля, и мне нужно записать содержимое этого текстового поля в параметре hexUpDown.Value.

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Если вам нужно объединить байты в 64-битные значения, попробуйте это (предполагается, что конечная конечность).

string[] words = { "0B", "00", " 00", "00", "00", "07", "3F", "14", "1D" };
var words64 = new List<string>();
int wc = 0;
var s = string.Empty;
var results = new List<ulong>();

// Concat string to make 64 bit words
foreach (var word in words) 
{
    // remove extra whitespace
    s += word.Trim();
    wc++;

    // Added the word when it's 64 bits
    if (wc % 4 == 0)
    {
        words64.Add(s);
        wc = 0;
        s = string.Empty;
    }
}

// If there are any leftover bits, append those
if (!string.IsNullOrEmpty(s))
{
    words64.Add(s);
}

// Now attempt to convert each string to a ulong
foreach (var word in words64)
{
    ulong r;
    if (ulong.TryParse(word, 
        System.Globalization.NumberStyles.AllowHexSpecifier, 
        System.Globalization.CultureInfo.InvariantCulture, 
        out r))
    {
        results.Add(r);
    }
}

Результаты:

List<ulong>(3) { 184549376, 474900, 29 }
0 голосов
/ 26 сентября 2018
var ulongs = words.Select(x => ulong.Parse(x, NumberStyles.HexNumber)).ToArray();
...