Как найти два неподписанных символа в QByteArray - PullRequest
1 голос
/ 20 сентября 2019

Я довольно новичок в C ++ и Qt.Я пытаюсь проверить, показывает ли QByteArray два раза подряд определенный неподписанный символ.К сожалению я не могу это сделать.Кто-нибудь знает как это исправить?

QByteArray byteArray;
unsigned char start_stop = 0xFE;


if(byteArray.contains(start_stop))
{
//this one is working
}


if(byteArray.contains(start_stop+start_stop))
{
//This one not
}


if(byteArray.contains(start_stop, start_stop))
{
//This one not
}

Ответы [ 2 ]

1 голос
/ 20 сентября 2019

Я думаю, это то, что вы ищете, найдите индекс первого появления двух последовательных символов остановки в байтовом массиве:

#include <QtCore/QByteArray>    
#include <iostream>

int main()
{
  const char stop{'b'};
  const QByteArray v{"abcdebbaacdea"};
  std::cout << v.indexOf(QByteArray(2, stop)) << '\n'; // outputs: 5
}
1 голос
/ 20 сентября 2019

Вы можете организовать функцию следующим образом:

bool containsStartStop(const QByteArray & byteArray)
{
    return byteArray.contains(QByteArray(2, static_cast<char>(0xFE)));
}

или это:

bool containsStartStop(const QByteArray & byteArray)
{
    return QString(byteArray.toHex()).contains("FEFE");
}
...