Member 14837073 Ответов: 2

Как я могу преобразовать ASCII значение символа в MFC и наоборот


у меня есть один EditControl, где мне нужно напечатать значение ASCII для символа, который поступает из аппаратного обеспечения .

Я новый MFC в c++, если вы поможете мне его действительно поблагодарить полностью

Что я уже пробовал:

понятия не имею как это сделать

я пробовал обычную программу для преобразования значения ASCII в символ .
проект, который я делаю, это последовательный мониторинг в МФЦ .


я надеюсь, что вы поможете мне получить представление об этом
Заранее спасибо

2 Ответов

Рейтинг:
2

Richard MacCutchan

Это не имеет ничего общего с МФЦ, это базовые вычисления. Если вы определяете переменную как char введите и дайте ему числовое значение, а затем попробуйте отобразить его, тогда он покажет фактический символ, если он доступен для печати. Например:

char inchar = 65;
cout << "Character code 65 is : " << inchar << endl;

будет производить выход:
Character code 65 is : A

Точно так же если вам нужно числовое значение вам просто нужно привести его к целому числу таким образом:
char inchar = 'Q';
int qvalue = (int)inchar;


Member 14837073

Спасибо ,давайте попробуем, и я обновлю один раз, когда закончу

Member 14837073

for (int i = 0; i < 122; i++){
int asciiVal = rand()%97 + 122;
чар asciiChar = asciiVal;
cout << asciiChar < & lt; " ";
}
Над ворвется в Филадельфию, наполняя я получаю ошибку ,я хочу, чтобы напечатать значение символа "A" до "Z" и тупеть в статический текст в MFC

BOOL CAsciidemoDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();

// Добавьте пункт меню "О программе..." в системное меню.

// IDM_ABOUTBOX должен находиться в диапазоне системных команд.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
если (pSysMenu != nullptr)
{
BOOL bNameValid;
CString в strAboutMenu;
bNameValid = strAboutMenu.Методом loadstring(IDS_ABOUTBOX);
ASSERT(bNameValid);
если (!страбутмену.Отсутствуют())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}

// Установите значок для этого диалогового окна. Фреймворк делает это автоматически
// когда главное окно приложения не является диалогом
SetIcon(m_hIcon, TRUE); // установить большой значок
SetIcon(m_hIcon, FALSE); // установить маленький значок

char nchar = 65;
m_ASCIIRESULT = nchar; /** здесь я хочу заглушить данные, которые я получу
выход в cout.
// TODO: добавьте дополнительную инициализацию здесь

return TRUE; // return TRUE, если вы не установите фокус на элемент управления
}

Richard MacCutchan

Я понятия не имею, что все это значит. Печатаемые символы ASCII начинаются с пробела при значении 0x20 и продолжаются до 0x7E, Тильды"~". Числа, которые вы используете, несколько случайны.

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

Member 14837073

u помогите мне изменить код, который я пытался напечатать ASCII-символ ..

Richard MacCutchan

Я понятия не имею, что это значит. Ни один из приведенных выше кодов не имеет никакого смысла по отношению к вашему первоначальному вопросу.

jeron1

for (int i = 0; i < 122; i++){
int asciiVal = rand()%97 + 122;
char asciiChar = asciiVal;
cout << asciiChar << " ";
}

Это то, как вы пытаетесь напечатать " а "через " я"?

Member 14837073

Да ,там что-то не так, понятия не имею

jeron1

как насчет чего-то вроде;

    for (int i = 'a'; i <= 'z'; i++) 
    { 
  
         cout << i <<" "; 
    } 

Member 14837073

Выше код символа в ASCII-код ,(который сделал код, основанный на том, что)
который я уже упоминал, код ASCII преобразуется в символ (мой ожидаемый).

TRACE( "ASCII format is : %c\n", myByte ); //solutions 2 it help me out in mfc to get character

jeron1

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

Рейтинг:
1

Rick York

Я думаю, что важно понимать, что то, что вы делаете, это НЕ преобразование символов. Все это не имеет никакого отношения к конверсии. Речь идет о форматировании дисплея. Данные могут быть отображены в любом формате, который вы хотите.

То, что у вас есть-это байт. Этот байт может иметь значение от 0 до 255 в базе 10. Он может варьироваться от 0 до FF в базе 16 или шестнадцатеричном формате и от 0 до 11111111 в базе 2 или двоичном формате. Данные есть данные. Нет ничего, что делает байт символом ASCII или шестнадцатеричным символом или чем-то еще. Это всего лишь байт. То, что я только что показал вам, - это три разных интерпретации этого байта- он был показан в трех разных форматах.

Поскольку вы используете MFC, рассмотрите возможность использования макроса трассировки и просмотра выходных данных в IDE. Это позволит вам играть с опциями форматирования. Вот код, который будет отображать один и тот же байт в трех различных форматах в окне вывода среды IDE Visual Studio :

TRACE( "decimal format is : %d\n", myByte );
TRACE( "hexadec format is : %02X\n", myByte );
TRACE( "ASCII format is   : %c\n", myByte );
Обратите внимание, что это один и тот же фрагмент данных, отображаемый тремя различными способами, и в каждом случае он имеет одно и то же значение.


Member 14837073

Спасибо , я попробую это сделать

Member 14837073

я начинаю с базового ,мое требование заключается в том ,что мои данные поступают из аппаратного обеспечения ,основанного в формате ASCII, над кодом, который я хочу напечатать в статическом тексте в mfc, как мне это сделать

m_result_ascii ///переменная статического текста