Russian Qt Forum
Ноябрь 26, 2024, 12:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Формат данных  (Прочитано 5015 раз)
demaker
Птица говорун
*****
Offline Offline

Сообщений: 962


Просмотр профиля
« : Август 15, 2013, 10:23 »

Скажите.
Как сделать так, что информацию, которую я набиваю в QLineEdit
была представлена в hex.
Т.е. 1 в строковом формате -> переводилась как 1 hex.
Записан
voral
Гость
« Ответ #1 : Август 15, 2013, 11:11 »

Скажите.
Как сделать так, что информацию, которую я набиваю в QLineEdit
была представлена в hex.
Т.е. 1 в строковом формате -> переводилась как 1 hex.
Не совсем понятно задача. А если 10 введено? 
Если я правильно понял. Вам хочется введеное в инпут десятично число отобразить в 16ричном виде?
Тогда несколько наводок:
Код:
qint16 t = youtrlineedit.text().toInt();  // вот мы превратили строку в число
// здесь стоит обработать ошибку если в стоке было не число (читаем доку по toInt)
qDebug() << t << QString("Введено %1 это '%2' в хексе").arg(t).arg(t, 0, 16); // а вот текст и представление числа в 16-ричной системе
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 962


Просмотр профиля
« Ответ #2 : Август 15, 2013, 11:23 »

только чтобы этот 16-ричный код можно было запихнуть в порт
типа
пишем B lineEdit:
10 00 8f 8f  16
и это в хексе уходит в порт.
Код:
QByteArray data;
port->write(data,data.size());
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #3 : Август 15, 2013, 11:54 »

Код
C++ (Qt)
QString text = lineEdit1->text();
text.remove(" ");
QByteArray data = QByteArray::fromHex(text.toAscii());
port->write(data,data.size());
« Последнее редактирование: Август 15, 2013, 15:00 от LisandreL » Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 962


Просмотр профиля
« Ответ #4 : Август 15, 2013, 12:18 »



Код
C++ (Qt)
QString text = lineEdit1->text();
text.remove(" ");
QByteArray data = QByteArray::fromHex(text);
port->write(data,data.size());
И что это будет
Пишем посылку:
10 20 30
А в итоге
102030 переведет в hex
В итоге неправильно все будет
Записан
voral
Гость
« Ответ #5 : Август 15, 2013, 12:28 »

Сдается какието задачи решают. НА cyberforum.ru дали ответ на подобны вопрос. (пользователь l_a_m)
Код:
QString str = QString("0x01 0x40 0x55 0x66");
QByteArray b;
foreach(const QString & item, str.split(" ") {
  bool isOk = false;
  int data = tem.toInt(&isOk, 16);
  if (true == isOk) {
     b.append(data);
  }
}
Записан
Bepec
Гость
« Ответ #6 : Август 15, 2013, 13:07 »

demaker - сплить перед использованием fromHex. И каждую часть переводи в hex. Тогда будет тебе счастье.
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #7 : Август 15, 2013, 14:59 »

И что это будет
Пишем посылку:
10 20 30
А в итоге
102030 переведет в hex
В итоге неправильно все будет
Будет
data[0]==16==0x10
data[1]==32==0x20
data[2]==48==0x30

Если вам нужно не это, то объясняйте понятнее, что вам нужно. Можно с примерами.
Записан
Majestio
Гость
« Ответ #8 : Август 20, 2013, 11:01 »

только чтобы этот 16-ричный код можно было запихнуть в порт
типа
пишем B lineEdit:
10 00 8f 8f  16
и это в хексе уходит в порт.
Код:
QByteArray data;
port->write(data,data.size());

В порт уходит не в хексе, в порт уходит в байтах)).
Потому задача более другая ... перевести QString в QByteArray с учетом смены системы исчисления.

ИМХО, алгоритм должен быть примерно следующим:

1) Введенную строку сплитим на "строки-числа"
2) В цикле преобразуем "строки-числа" из п.1 в байты и загружаем их в QByteArray с учетом системы исчисления
3) Загоняем результат в порт

ЗЫ: Следует иметь ввиду, что запись в порт нужно делать не указателя QByteArray-переменной, а брать ссылку на массив данных посредством:

char * QByteArray::data ()
« Последнее редактирование: Август 20, 2013, 11:04 от Majestio » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.253 секунд. Запросов: 22.