C# Как преобразовать массив целых чисел в шестнадцатеричную строку и наоборот?


#1

Нужно преобразовать все числа в массиве в строку, а также реализовать возможность обратного преобразования.
Например, если есть массив из чисел {1234, 1472}, то в результате должно выдать "4D2 5C0 "


#2

можно сделать что-то вроде этого:

static string NumberArrayToString(int[] array)
{
    StringBuilder hex = new StringBuilder();
    for (int i = 0; i < array.Length - 1; i++)
    {
        hex.AppendFormat("{0:x2} ", array[i]);
    }

    hex.AppendFormat("{0:x2}", array[array.Length - 1]);       

    return hex.ToString();
}

public static int[] StringToNumberArray(string hex)
{
    string[] hexArray = hex.Split(' ');

    int[] numbers = new int[hexArray.Length];
    for (int i = 0; i < hexArray.Length; i++)
    {
        numbers[i] = Convert.ToInt32(hexArray[i], 16);
    }
    return numbers;
}

public static void ShowArray(int[] array)
{
    for (int i = 0; i < array.Length; i++)
    {
        Console.Write($"{array[i]} ");
    }
    Console.WriteLine();
}

static void Main(string[] args)
{
    int[] array = new int[5];
    Random random = new Random();
    
    for (int i = 0; i < array.Length; i++)
    {
        array[i] = random.Next(2147483647);
    }

    ShowArray(array);

    string str = NumberArrayToString(array);

    Console.WriteLine();
    Console.WriteLine($"'{str}'");
    Console.WriteLine();

    //Console.WriteLine(hexArray.Length);

    array = StringToNumberArray(str);
    ShowArray(array);
    Console.ReadKey();
}

результат работы данного кода:

image

в методе NumberArrayToString условие цикла было установлено i < array.Length - 1 поскольку если не сделать -1 в результате будет строка "123 12aa " таким образом при использовании метода Split(' ') в результат выдаст массив размером 3, когда нужно только 2