Как передать одно шестнадцатеричное значение последовательных данных в PuTTY с помощью кода Alt?

Я пытаюсь отправить определенное шестнадцатеричное значение через последовательный COM-порт с помощью PuTTY. В частности, я хочу отправить шестнадцатеричные коды 9C, B6, FC и 8B. Я посмотрел вверх Alt коды для них и они, 156, 182, 252, и 139 соответственно.

однако, когда я введите Alt коды, предыдущее шестнадцатеричное значение C2 отправляется до 9C, B6 и 8B, поэтому отправляемые значения C2 9C, C2 B6 и C2 8B. Значение для FC изменено на C3 FC.

Почему эти значения помещаются перед шестнадцатеричным значением и почему FC изменяется полностью? Мне кажется, что существует проблема внутреннего преобразования Alt код в hex. Есть ли способ напрямую вводить шестнадцатеричные значения без использования Alt коды в замазке?

3
задан fixer1234
06.03.2023 1:13 Количество просмотров материала 3400
Распечатать страницу

1 ответ

то, что вы видите, это просто обычный набор символов преобразования текста.

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

другими словами, при вводе Alt+1 8 2, шпатлевка получает соответствующий символ от наследия " OEM" кодировка, для которой настроена система. (Набрав Alt+0 1 8 2 будет выбирать из устаревшего набора символов" ANSI " (Windows-125x).) В этом случае, символ , а абзаца.

теперь PuTTY должен преобразовать этот символ в байты. Более ранние версии PuTTY по умолчанию будут выбирать тот же устаревший набор символов Windows-125x, что и сама ОС, например Windows-1257, поэтому преобразование было почти прямым вводом 1 8 2, получить байт 182 десятичный (0xb6 шестнадцатеричный).

однако, поскольку PuTTY обычно подключается к серверам Linux или BSD, подавляющее большинство из которых перешли на UTF-8 по умолчанию последняя версия PuTTY также начала использовать UTF-8. UTF-8 является кодировкой мега-набора символов Unicode, который имеет в позиции U+00B6, и это в основном просто совпадение что UTF-8 кодирует это значение в байтах C2 B6:

  • U+00B60000|0000 10|110110[110]00010 [10]110110C2 B6

  • U+00FC0000|0000 11|111100[110]00011 [10]111100C3 BC

  • U+20AC0010|0000 10|101100[1110]0010 [10]000010 [10]101100E2 82 AC

  • Википедия имеет его с цветами

в качестве другого примера, буква ė раньше было byte E6 в кодировке Windows-1257, но в Unicode это U + 0117, что соответствует bytes C4 97 в UTF-8. Эти последовательности имеют переменную длину, до 4 байт для больших позиций.

Если Вам абсолютно необходимо использовать PuTTY для отправки двоичных данных, откройте экран настроек " окно → перевод "и выберите CP437, ISO-8859-1 или Windows-1252 в качестве"удаленного набора символов". (Сохраните это в отдельном сеансе; do не сохранить это как глобальное значение по умолчанию, потому что он будет нарушать регулярные соединения SSH.)

4
отвечен grawity 2023-03-07 09:01

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх