ASCII в Unicode и наобарот
Привет всем. Помогите пожайлуста реализовать на асме код, для перевода ASCII кодировки в Unicode и наобарот. Заранее благодарен !
посмотри команды xlat и xlatb .
Первые 128 ASCII-символов транслируются элементарно - с расширением до 16 разрядов нулями, вторые 128 - по разному - это зависит от того, в какую плоскость или даже несколько плоскостей идет трансляция (здесь, естественно, также необходимо знать, что из себя представляет вторая половина ASCII - ведь она может быть разной)!
Есть одна программа, в ней реализованна поддержка ASCII... Когда я ввожу текст в программе на русской раскладке, то у меня вместо букв пишутся различные символы, например "@123@!@%!" и т.п... Необходимо засунуть в пустое место в программе, декодер и енкодер из ASCII в Unicode, чтобы была возможность писать на русском и прочесть что написал, тоже на русском. Как написать и как лучше я незнаю, поэтому прошу помощи у вас.
Существует множество "русских" кодировок ASCII! Какую используешь ты? Под какую ОС расчитана программа? В каком экранном режиме она работает (текстовом или графическом)? Поддерживает ли клавиатурный драйвер ту кодировку, которую ты используешь? Поддерживает ли экранный драйвер/менеджер шрифтов тот набор символов, который ты расчитываешь увидеть на экране? Сделай уточнения по этим вопросам, и может быть тебе помогут!
Программа работает под Windows в графическом режиме. Драйвер поддерживет кодировку и символы, которые хочу вывести. Нужно только засунуть туда конвертер :)
RtlAnsiStringToUnicodeString
Цитата: Ramon
RtlAnsiStringToUnicodeString
Спасибо, но как именно применять эту функцию на асме ? Можно поподробней ?
точно так же как и другие функции вот только тебе нужна будет структура ANSI_STRING и UNICODE_STRING из DDK
Во- первых, есть такой макрос: CA2W ( и аналогичный для перевода назад ). Правда, он из библиотеки c++ ( :) ). Во- вторых, чем отличается unicode символ от анси? Тем, что юникод двухбайтовый, а анси- однобайтовый. Так что, если после каждого символа прибавлять '\0', ты получишь из юникод- строки анси- строку. У меня так в студии прокатывало.
это про прокатит только на английском алфавите, а с русским это врядли пройдёт........