У меня есть немного проблем с преобразованием символа в QString, поскольку он сохраняет дескрипторы символов ASCII вместо суммы, которую я хотел бы иметь в форме шестнадцатеричного байта (например, ffd0
).Обработка символов ASCII в преобразовании char в QString
Немного гуляем через кода у меня есть - У меня есть строка шестнадцатеричных значений (A1-B2-C3
), который находится в QByteArray и оперированных функцией CheckSum я создал. Вывод представляет собой байк контрольной суммы (ffd0
), и он правильно печатается на терминале с printf("%x", checkSum(output));
, но когда я использую функции ui Qt, он печатает мусор.
Каков наиболее эффективный способ сделать это на Qt Creator?
Вот некоторые дополнительные разъяснения:
Вход:
A1-B2-C3
Выход:
Label - "" (Nonsenical ASCII, а иногда и ocasional катакана и хирагана, исключительно в зависимости от введенного гексагона)
Printf - ffd0
(который является собственно выход и один, который я хотел бы установить в качестве текста метки и lineEdit)
Код Бит:
char MainWindow::checkSum(QByteArray &b)
{
char val = 0x00;
char i;
foreach (i, b)
{
val ^= i;
}
return val;
}
...
QChar resultCh = checkSum(output);
ui->lineEdit->setText(resultCh);
ui->outputLabel->setText(resultCh);
printf("%x\n", resultCh);
...
Проблема в том, что ваш checkSum на самом деле не является персонажем. Это целое число со знаком 8 бит. Вам нужно преобразовать это целое число со знаком в текстовую строку - не рассматривать ее как символ Юникода (именно это вы делаете в данный момент). –