Russian Qt Forum

Qt => Общие вопросы => Тема начата: kuzulis от Май 16, 2009, 18:22



Название: QByteArray вывод данных в консоль
Отправлено: kuzulis от Май 16, 2009, 18:22
Приветствую всех!

Тут у меня возникла проблема с выводом данных из QByteArray в консоль...
т.е. заполняю массив так:
Код:
for (int i=0;i<bw;i++) {
   ba[i] = i;
}

и мне нужно в консоль вывести данные так, чтобы получилось :
[01][02][03]....[FF]
к примеру...

если вывожу данные так:
Код:
for (int i=0;i<ba.size();i++) {
   cout << "{" << ba.at(i) << "}";
}

то в консоль выводится что то вроде и спикер пикает:
Цитировать
[ ][☺][☻][♥][♦][♣][♠] и т.п.
если вывожу так:
Код:
...
   cout << "{" << (int)ba.at(i) << "}";
...
то выводит:
Цитировать
  • [1][2][3][4] .... [127][-128][-127] и т.п.
если использовать функцию QByteArray::number(n, 16);
то вместо [01] выводит [1], вместо [0F] выводит [F] и т.п.

Подскажите, где взять функцию, которая преобразовывала бы DEC в HEX с указанием количества байт для вывода, типа этого:

QByteArray DecToHex(int Data, int Bytes), где
Data - это число которое нужно преобразовать, Bytes - количество выводимых байт (формат вывода), т.е
если Bytes = 1 то должно вывести [01] ... [0F] .... [FF]
если Bytes = 2 то [0001] ... [00FF] ... [FFFF]
и т.п.

Итак два вопроса:
1. Как вывести в DEC
2. Как вывести в HEX


Название: Re: QByteArray вывод данных в консоль
Отправлено: lit-uriy от Май 16, 2009, 18:49
int QByteArray::toInt ( bool * ok = 0, int base = 10 ) const
QByteArray QByteArray::toHex ()
найдено в асистенте, по ключевым словам "Hex" и "Int"



Название: Re: QByteArray вывод данных в консоль
Отправлено: kuzulis от Май 16, 2009, 20:06
2 lit-uriy

упс, а в QT 4.1 нету этих функций :) (у меня в Windows она стоит)

а в QT 4.3 они уже есть (у меня она в Linux стоит)

использовал
Код:
int main(int argc, char *argv[])
{
    QCoreApplication app(argc, argv);


QByteArray ba;
cout << "Please Enter ByteArray size : ";
int bw=0;
cin >> bw;
ba.clear();
ba.resize(bw);
for (int i=0;i<ba.size();i++) {
ba[i] = i;
}

QByteArray bahex;

bahex = ba.toHex();
for (int i=0;i<bahex.size();i++) {
cout << "[" << bahex.at(i) << "]";
}
cout << endl;

    return app.exec();
}

все-равно приходится "извращаться" чтобы вывести по-нормальному данные, а также вводить "лишние сущности" :)

но спасибо!