Нужно преобразовать все числа в массиве в строку, а также реализовать возможность обратного преобразования.
Например, если есть массив из чисел {1234, 1472}
, то в результате должно выдать "4D2 5C0 "
можно сделать что-то вроде этого:
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();
}
результат работы данного кода:
в методе NumberArrayToString условие цикла было установлено i < array.Length - 1
поскольку если не сделать -1 в результате будет строка "123 12aa "
таким образом при использовании метода Split(' ')
в результат выдаст массив размером 3
, когда нужно только 2
1 Вподобання