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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Проблема с преобразованием hex -> int  (Прочитано 12157 раз)
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



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

Я не силён в ухищрениях, но почему компилятор не ругается на преобразование типа? Вдруг я там ошибся?
Почему я в цикле for когда сравниваю int и uint, происходят предупреждения, а тут нет?
Проблемы возможны на сравнении, а присвоение/инициализация безопасны

В Qt сделано нормально, нужно задавать знак явно (а не делать предположения), напр
Код
C++ (Qt)
bool ok;
QString str("-F5");
int i = str.toInt(&ok, 16);

-F5 дает -245
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #16 : Август 12, 2014, 13:17 »

-F5 дает -245
Правильно дает -(15 * 16 + 5) = -245
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #17 : Август 12, 2014, 13:27 »

Я не вижу способа получения -11 из FFFFFFF5 этим методом.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



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

Я не вижу способа получения -11 из FFFFFFF5 этим методом.
0x100000000 - 0xFFFFFFF5 = 0x0B (11)
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #19 : Август 12, 2014, 13:36 »

Я не вижу способа получения -11 из FFFFFFF5 этим методом.
0x100000000 - 0xFFFFFFF5 = 0x0B (11)
Согласен, только это не позволит красиво записать решение в одну строчку.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #20 : Август 12, 2014, 13:41 »

Согласен, только это не позволит красиво записать решение в одну строчку.
Про какое решение речь?
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #21 : Август 12, 2014, 13:47 »

Перевод QString("FFFFFFF5")
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #22 : Август 12, 2014, 14:21 »

Перевод QString("FFFFFFF5")
Уже же все написали. Если вы хотите получить число со знаком, то и использовать нужно число со знаком.
Записан
manarch
Гость
« Ответ #23 : Август 13, 2014, 09:20 »

Добрый день всем.

Столкнулся с проблемой преобразования из hex в int.
Код:
Код:
    QString str = "FFFFFFF5";
    bool t;
    qDebug() << str.toInt(&t, 16) << t;
дает результат:
Код:
0 false
Но это hex-число равно на самом деле -11.
Подскажите, плз, как заставить программу правильно преобразовывать подобные знаковые hex-значения?

Код
C++ (Qt)
QString str = QString("0xFFFFFFF5");
QTextStream stream(&str);
int v = 0;
stream>>hex>>v;
qDebug()<<v;
 

ЗЫ: без "0x" не прокатывает!
« Последнее редактирование: Август 13, 2014, 09:37 от manarch » Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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