Как отобразить байт в двоичном виде?

Можно ли перевести байт в двоичный вид и вывести в консоль или на форму?
QByteArray res = mSerial.serialRead(); //приняли байт из serialport
qDebug() << res << "\n"; // вывод в двочном виде 10101010.....
  • Вопрос задан
  • 203 просмотра
Пригласить эксперта
Ответы на вопрос 4
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
#include <iostream>
#include <bitset>
...
std::cout << "111 = " << std::bitset<8>(111) << std::endl;
Ответ написан
Комментировать
@dima20155
you don't choose c++. It chooses you
Вывести все, что пришло через последовательный порт:

for (auto it = res.constBegin(); it != res.constEnd(); ++it) {
    std::cout << bitset<8>(*it).to_string() << std::endl;
}


Скорее всего, должен также сработать STL-style code (судя по документации):

for (const auto it: res) {
    std::cout << bitset<8>(*it).to_string() << std::endl;
}
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Программист С++ должен уметь работать с битами. Сдвигать влево-вправо. Делать булевы операции.
Тем более что ты там сериал-порты собрался крутить.

Вот сам алгорим
https://stackoverflow.com/questions/111928/is-ther...

От него уже можно и форматировать массив и перегружать "птичку влево".

Qt - хорошее корбочное решение. Но твой вопрос должен был пойти не от Qt.
Ответ написан
Комментировать
Как-то так
QByteArray res = mSerial.serialRead();
for(auto&& i : res)
 qDebug() <<  QString("%1").arg(i, 8, 2, QChar('0'));
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы