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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QByteArray вывод данных в консоль  (Прочитано 9099 раз)
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« : Май 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
Записан

ArchLinux x86_64 / Win10 64 bit
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Май 16, 2009, 18:49 »

int QByteArray::toInt ( bool * ok = 0, int base = 10 ) const
QByteArray QByteArray::toHex ()
найдено в асистенте, по ключевым словам "Hex" и "Int"

Записан

Юра.
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #2 : Май 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();
}

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

но спасибо!
Записан

ArchLinux x86_64 / Win10 64 bit
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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