Перевод строки в шестнадцатеричном коде в ascii на C#

  • Михаил
  • 8 мин. на прочтение
  • 101
  • 27 Aug 2023
  • 27 Aug 2023

Этот код преобразует шестнадцатеричную строку в ASCII, вы можете скопировать и вставить ее в класс и использовать без создания экземпляров. И по традиции начнем с основ, что такое ascii и hex. HEX система (сокращенно «шестнадцатеричная») использует в качестве основания (основания) число 16. В системе счисления с основанием 16 используется 16 символов. Это 10 десятичных цифр (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) и первые шесть букв английского алфавита (A, B, C, D, E, F). Буквы используются из-за необходимости представлять значения 10, 11, 12, 13, 14 и 15 каждое в одном символе. Шестнадцатеричный формат используется в математике и информационных технологиях как более удобный способ представления двоичных чисел. Каждая шестнадцатеричная цифра представляет четыре двоичных цифры; следовательно, hex — это язык для записи двоичных файлов в сокращенной форме. Четыре двоичных цифры (также называемые полубайтами) составляют полбайта. Это означает, что один байт может содержать двоичные значения от 0000 0000 до 1111 1111. В шестнадцатеричном формате они могут быть представлены более удобным образом в диапазоне от 00 до FF. В программировании HTML цвета могут быть представлены шестизначным шестнадцатеричным числом: FFFFFF представляет белый цвет, а 000000 — черный. ASCII (Американский стандартный код обмена информацией) — один из наиболее распространенных стандартов кодировки символов. Первоначально разработанный на основе телеграфных кодов, ASCII в настоящее время широко используется в электронной связи для передачи текста. Поскольку компьютеры понимают только числа, код ASCII представляет текст (символы) с разными числами. Именно так компьютер «понимает» и показывает текст. Исходный ASCII основан на 128 символах. Это 26 букв английского алфавита (как в нижнем, так и в верхнем регистре); цифры от 0 до 9; и различные знаки препинания. В коде ASCII каждому из этих символов присвоено десятичное число от 0 до 127. Например, представление ASCII в верхнем регистре A равно 65, а в нижнем регистре a — 97.

       public static string HexToASCII(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);
                   uint decval = System.Convert.ToUInt32(hs, 16);
                   char character = System.Convert.ToChar(decval);
                   ascii += character;
               }
               return ascii;
           }
           catch (Exception ex) { Console.WriteLine(ex.Message); }
           return string.Empty;
       }

Примечание

2= нет. символов hexString, используемых для представления символа ASCII.

System.Convert.ToUInt32(hs, 16)= «преобразовать шестнадцатеричные подстроки по основанию 16 в беззнаковое 32-битное целое число»

Использование

            string stringHex = "FF 10 00 03 00 02 04 00 02 00 1E";
            Console.WriteLine($"Строка в HEX = {stringHex}");
            Console.WriteLine($"Строка в ASCII = {ConvertHex(stringHex.Replace(" ", ""))}");

Результат