crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> вопрос по toInt(&ok,0)
qt_user
  опции профиля:
сообщение 26.10.2012, 17:32
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 52
Регистрация: 11.9.2012
Пользователь №: 3518

Спасибо сказали: 0 раз(а)




Репутация:   0  


 qDebug()<<"param[3] = "<<param[3]<<"  "<<(quint32)param[3].toInt(&ok,0);


Цитата
param[3] = "3B" 0


param[3] - это QString. Почему он конвертируется в ноль командой (quint32)param[3].toInt(&ok,0);?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.10.2012, 17:47
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


выведи резюме преобразования
bool ok;
qDebug()<<"param[3] = "<<param[3]<<"  "<<(quint32)param[3].toInt(&ok,0) << "Ok?:" << ok;


П.С.
При использовании оператора << в qDebug() , нет необходимости делать пробелы руками, т.к. после каждого оператора << автоматически qDebug() добавит пробел.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 26.10.2012, 17:48
Сообщение #3


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


(quint32)param[3].toUInt(&ok,16);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
qt_user
  опции профиля:
сообщение 26.10.2012, 17:53
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 52
Регистрация: 11.9.2012
Пользователь №: 3518

Спасибо сказали: 0 раз(а)




Репутация:   0  


ноль в
Цитата
toUInt(&ok,0);

стоит для автоматического определения системы счисления.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 26.10.2012, 18:06
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Цитата(qt_user @ 26.10.2012, 18:32) *
 qDebug()<<"param[3] = "<<param[3]<<"  "<<(quint32)param[3].toInt(&ok,0);


Цитата
param[3] = "3B" 0


param[3] - это QString. Почему он конвертируется в ноль командой (quint32)param[3].toInt(&ok,0);?


Цитата
If base is 0, the C language convention is used: If the string begins with "0x", base 16 is used; if the string begins with "0", base 8 is used; otherwise, base 10 is used.

http://www.doc.crossplatform.ru/qt/4.7.x/qstring.html#toInt

Поэтому или param должен быть "0x3B" или используй toInt(&ok, 16), или пиши регулярку и определяй базу сам.

Или, наверное самое простое
    bool ok;
    qint32 n = (quint32)(param[3].toInt(&ok,10));

    if (!ok)
        qint32 n = (quint32)(param[3].toInt(&ok,16));


Сообщение отредактировал Sokoloff - 26.10.2012, 18:12
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
iReset
  опции профиля:
сообщение 26.10.2012, 18:10
Сообщение #6


Участник
**

Группа: Участник
Сообщений: 178
Регистрация: 6.6.2012
Пользователь №: 3414

Спасибо сказали: 23 раз(а)




Репутация:   2  


Цитата(qt_user @ 26.10.2012, 18:53) *
ноль в
Цитата
toUInt(&ok,0);

стоит для автоматического определения системы счисления.

В описании функции toInt написано, как определяется основание числа: шестнадцатеричное число должно начинаться с "0x".
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 18.4.2024, 18:07