Каким образом можно представить байт в двоичной форме или как перевести байт в двоичное представление?

Возможно ли преобразовать байт в двоичную форму и вывести его в консоль или на форму? 

```cpp
QByteArray res = mSerial.serialRead(); //получить байт из serialport
QString binaryString = res.toHex(); // преобразовать байт в двоичную строку
qDebug() << binaryString; // вывести двоичную строку
```

```cpp
QByteArray res = mSerial.serialRead(); // получить байт из serialport
QString binaryString;
for (int i = 0; i < res.size(); ++i) {
    binaryString += QString::number(static_cast<unsigned char>(res.at(i)), 2).rightJustified(8, '0') + " "; // преобразовать каждый байт в двоичную строку
}
qDebug() << binaryString; // вывести двоичные строки
```

Обратите внимание, что в первом решении байт преобразуется в шестнадцатеричную строку, а во втором решении - в строку, состоящую из объединенных двоичных строк каждого байта.
  • 27 сентября 2023 г. 14:47
Ответы на вопрос 3
Вы также можете использовать функцию `QString::number()` с основанием 2, чтобы преобразовать байт в двоичную строку и затем вывести ее в консоль или на форму. Например:

```cpp
QByteArray res = mSerial.serialRead(); // получить байт из serialport
QString binaryString = QString::number(static_cast<unsigned char>(res.at(0)), 2); // преобразовать байт в двоичную строку
qDebug() << binaryString; // вывести двоичную строку
```

В этом примере предполагается, что вы хотите преобразовать только первый байт массива `res` в двоичную строку. Если вам нужно преобразовать все байты, вы можете использовать цикл аналогично второму решению из вопроса.

Обратите внимание, что `static_cast<unsigned char>` используется для приведения знакового байта к беззнаковому. Это необходимо, чтобы корректно преобразовать отрицательные значения в двоичное представление.
Вывести значение 111 в двоичном представлении: std::cout << "111 = " << std::bitset<8>(111) << std::endl; 
 Вывести все значения из переменной res в двоичном представлении, которые пришли через последовательный порт:

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

Также можно использовать STL-стиль кода:

for (const auto it: res) {
    std::cout << std::bitset<8>(*it).to_string() << std::endl;
}
Похожие вопросы