Преобразование греческих символов в терминальный шестнадцатеричный шрифт - PullRequest
0 голосов
/ 25 апреля 2018

Мне нужно конвертировать греческие символы как шестнадцатеричное значение шрифта терминала charmap. image

Пример, как я могу конвертировать

string test="ΞΥΔΙ";

в шестнадцатеричное значение "\ 0x8D ....... и т. Д.

Если будет преобразовано из строки в шестнадцатеричное, я получаю неправильное шестнадцатеричное значение

 byte[] ba = Encoding.GetEncoding(1253).GetBytes("ΨΓΣΦ");
        var hexString = BitConverter.ToString(ba);
        MessageBox.Show(hexString);

Пример из символа 'Ξ' я получаю 0xCE

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Вы близки:

  1. Изменить кодовую страницу с Windows (Win- 1253 ) на MS DOS one ( 737 )
  2. Если вы хотите видеть коды, представленные в виде строки, я предлагаю использовать Linq и String.Join

Примерно так:

 // Terminal uses MS DOS Code Page which is 737 (not Win-1253)
 byte[] ba = Encoding.GetEncoding(737).GetBytes("ΞΥΔΙ"); 

 // Let's use Linq to print out a test
 var hexString = string.Join(" ", ba.Select(c => $"0x{(int)c:X2}"));

 Console.Write(hexString);

Результат:

 0x8D 0x93 0x83 0x88

Обратите внимание, что Ξ имеет 0x8D код.

0 голосов
/ 25 апреля 2018

Ваша реализация на самом деле в порядке с тем, что я тестировал.

Я только что использовал калькулятор Windows и таблицу кодировки Википедии 1253.

Я искал символ 'Ξ', и, хотя я не разбираюсь в греческих символах, простой поиск показывает, что этот символ действительно соответствует 0xCE (мне кажется, что шрифт выглядит странно, но браузеру это нравится).

enter image description here

...