В моей программе я много работаю с последовательной связью, поэтому QByteArray
используется очень часто.
Мне было интересно, есть ли более короткий способ инициализировать QByteArray
определенными байтами, чем:
const char test_data[] = {
static_cast<char>(0xB1), static_cast<char>(0xB2),
0x5, static_cast<char>(0xFF),
static_cast<char>(0xEE), static_cast<char>(0xEE),
static_cast<char>(0x0)}; // Note QByteArray should be able to hold 0 byte
const QCanBusFrame frame = QCanBusFrame(0xA1, QByteArray(test_data));
static_cast<char>
необходим, потому что в противном случае C++11 выдает ошибку о сужении, потому что диапазон от 0x7F до 0xFF больше, чем может поместиться char
, но char
— это то, что запрашивает конструктор QByteArray
.
Это используемый конструктор QByteArray
:
QByteArray::QByteArray(const char *data, int size = -1)
test_data
как массив символов без знака (unsigned char*), а затем приводите его к массиву символов (char*)? - person OnurA   schedule 31.03.2016test_data
, выдает недопустимое преобразование из 'int' в 'const unsigned char* - person DBedrenko   schedule 31.03.2016QByteArray
с тем, что вы хотите в качестве аргумента. - person Garf365   schedule 31.03.2016