C# Hex в строку

Перевожу строку в Hex так:textBox3.Text = String.Concat(login.Select(x => ((int)x).ToString("x"))); А как можно обратно её перевести в текст? Подскажите пожалуйста.


Ответы (1 шт):

Автор решения: aepot

Вообще таких материалов в поиске много: 1, 2, 3. На русском языке наверное тоже, но я не искал.

Вот пример безопасного преобразования строки в обе стороны на базе консольного приложения

static void Main(string[] args)
{
    string s = "Hello World!";
    Console.WriteLine(s);

    byte[] bytes = Encoding.UTF8.GetBytes(s);
    string[] h = bytes.Select(x => x.ToString("x2")).ToArray();
    string hex = string.Concat(h);
    Console.WriteLine(hex);

    string[] hexBytes = new string[hex.Length / 2];
    for (int i = 0; i < hexBytes.Length; i++)
    {
        hexBytes[i] = hex.Substring(i * 2, 2);
    }
    byte[] resultBytes = hexBytes.Select(value => Convert.ToByte(value, 16)).ToArray();
    string result = Encoding.UTF8.GetString(resultBytes);
    Console.WriteLine(result);

    Console.ReadKey();
}

Вывод в консоль

Hello World!
48656c6c6f20576f726c6421
Hello World!
→ Ссылка