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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО]Строка в hex  (Прочитано 13839 раз)
Larry
Гость
« : Июнь 19, 2017, 13:39 »

Добрый день.
Подскажите пожалуйста, как преобразовать число в hex.
Делаю так:
QString s = "45";
QByteArray hex = s.toLocal8Bit().toHex();

В итоге получаю 3435? Что я неправильно делаю?
« Последнее редактирование: Июнь 19, 2017, 17:41 от Larry » Записан
vic57
Чайник
*
Offline Offline

Сообщений: 90


Просмотр профиля
« Ответ #1 : Июнь 19, 2017, 13:58 »

все верно - получаешь коды символов 4 и 5
Записан
Larry
Гость
« Ответ #2 : Июнь 19, 2017, 14:01 »

спасибо, но мне нужно число Улыбающийся
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #3 : Июнь 19, 2017, 14:10 »

спасибо, но мне нужно число Улыбающийся

http://doc.qt.io/qt-5/qstring.html#number
Код
C++ (Qt)
long a = 63;
QString s = QString::number(a, 16);             // s == "3f"
QString t = QString::number(a, 16).toUpper();     // t == "3F"
Записан

Larry
Гость
« Ответ #4 : Июнь 19, 2017, 14:22 »

Извините, видать и Вас запутал и сам запутался...А как получить из строки в шестнадцатиричном формате QByteArray? Т.е. пользователь вводит, например в QLineEdit значение 0x45 и мне необходимо его перевести в байт QByteArray. Спасибо.
Записан
Larry
Гость
« Ответ #5 : Июнь 19, 2017, 14:43 »

Сделал вот так:
Код:
int num = QString("45").toInt(&ok, 16)
QString s = QString::number(num, 16);
Но выглядит это, как-то топорно Улыбающийся
А если 0х45 переводить, то только удалять 0х?
Записан
Vladimir
Крякер
****
Offline Offline

Сообщений: 305



Просмотр профиля
« Ответ #6 : Июнь 19, 2017, 19:07 »

Вопрос в догоночку) близкий к теме.. а можно ли double представить в hex вообще, как это разумно делается?
Записан
vic57
Чайник
*
Offline Offline

Сообщений: 90


Просмотр профиля
« Ответ #7 : Июнь 19, 2017, 19:25 »

double - с плавающей точкой
http://www.softelectro.ru/ieee754.html
Записан
Vladimir
Крякер
****
Offline Offline

Сообщений: 305



Просмотр профиля
« Ответ #8 : Июнь 19, 2017, 22:52 »

double - с плавающей точкой
http://www.softelectro.ru/ieee754.html

спасибо, почитаю)
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #9 : Июнь 20, 2017, 11:02 »

Подскажите пожалуйста, как преобразовать число в hex.
В машине (памяти) числа и хранятся только в heх, десятичного представления нет. Можно получить строку в десятичном виде или heх, пример

Число 11 хранится в машине как 0x0B
десятичная строка "11"
hex строка "0x0B"

Вопрос в догоночку) близкий к теме.. а можно ли double представить в hex вообще, как это разумно делается?
Код
C++ (Qt)
double f = 11;
qint64 dummy = *(qint64 *) &f;
// qint64 dummy = (qint64 &) f;  // можно и так
qDebug() << QString::number(dummy, 16);
Но баловаться с таким представлением double надо осторожно, пример
Код
C++ (Qt)
double f1, f2;
...
qint64 dummy1 = *(qint64 *) &f1;
qint64 dummy2 = *(qint64 *) &f2;  
bool test1 = (f1 == f2);
bool test2 = (dummy1 == dummy2);
 
test1 и test2 могут быть не равны
« Последнее редактирование: Июнь 21, 2017, 12:33 от Igors » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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