Russian Qt Forum

Qt => Общие вопросы => Тема начата: Larry от Июнь 19, 2017, 13:39



Название: [РЕШЕНО]Строка в hex
Отправлено: Larry от Июнь 19, 2017, 13:39
Добрый день.
Подскажите пожалуйста, как преобразовать число в hex.
Делаю так:
QString s = "45";
QByteArray hex = s.toLocal8Bit().toHex();

В итоге получаю 3435? Что я неправильно делаю?


Название: Re: Строка в hex
Отправлено: vic57 от Июнь 19, 2017, 13:58
все верно - получаешь коды символов 4 и 5


Название: Re: Строка в hex
Отправлено: Larry от Июнь 19, 2017, 14:01
спасибо, но мне нужно число :)


Название: Re: Строка в hex
Отправлено: gil9red от Июнь 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"


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


Название: Re: Строка в hex
Отправлено: Larry от Июнь 19, 2017, 14:43
Сделал вот так:
Код:
int num = QString("45").toInt(&ok, 16)
QString s = QString::number(num, 16);
Но выглядит это, как-то топорно :)
А если 0х45 переводить, то только удалять 0х?


Название: Re: [РЕШЕНО]Строка в hex
Отправлено: Vladimir от Июнь 19, 2017, 19:07
Вопрос в догоночку) близкий к теме.. а можно ли double представить в hex вообще, как это разумно делается?


Название: Re: [РЕШЕНО]Строка в hex
Отправлено: vic57 от Июнь 19, 2017, 19:25
double - с плавающей точкой
http://www.softelectro.ru/ieee754.html


Название: Re: [РЕШЕНО]Строка в hex
Отправлено: Vladimir от Июнь 19, 2017, 22:52
double - с плавающей точкой
http://www.softelectro.ru/ieee754.html

спасибо, почитаю)


Название: Re: [РЕШЕНО]Строка в hex
Отправлено: Igors от Июнь 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 могут быть не равны