Преобразование шестнадцатеричной строки в ASCII работает, но не для всех символов - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь преобразовать шестнадцатеричную строку в ASCII в c #, используя Visual Studio Community 2017. Моя шестнадцатеричная строка выглядит следующим образом

070196000008220031CE4745542073776964FD48

когда я конвертирую его в ASCII, он выглядит так, как показано ниже

enter image description here

Моя путаница заключается в том, почему он показывает ASCII "\ a" для гекса "07" ?? так должно быть . Значение ASCII для гекса "01" должно быть, но оно показывает "\ u0001". То же самое для управляющих символов ASCII и расширенных символов ASCII.

Может кто-нибудь объяснить, пожалуйста! Я что-то упустил и как это сделать.

Код, который я использую для преобразования hextoascii

    public string ConvertHextoASCII(String hexString)
    {
        try
        {
            string ascii = string.Empty;

            for (int i = 0; i < hexString.Length; i += 2)
            {
                String hs = string.Empty;

                hs = hexString.Substring(i, 2);
                int decval = System.Convert.ToInt32(hs, 16);
                char character = System.Convert.ToChar(decval);
                ascii += character;
            }
            return ascii;
        } 
        catch (Exception ex) { Console.WriteLine(ex.Message); }

        return string.Empty;
     }

Заранее спасибо.

1 Ответ

0 голосов
/ 23 января 2019

Некоторые символы могут быть экранированы, кроме \u1234, если они в строковом литерале.\a соответствует символу «Bell (alert)» - кодовой точке Unicode (и ASCII) 7 (0x0007).Похоже, что отладчик предпочитает эти альтернативные экранирования формату \u1234, когда это возможно. Вот полный список escape-последовательностей в строковых литералах C #.

...