W moim programie pracuję dużo z komunikacją szeregową, dlatego bardzo często używam QByteArray
.Czy istnieje krótszy sposób inicjowania QByteArray?
Zastanawiałem się, czy istnieje krótsza droga do zainicjowania QByteArray
ze specyficznymi bajtów niż:
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>
jest konieczne, ponieważ w przeciwnym wypadku C++ 11 daje błąd o zwężenie, ponieważ zakres do 0x7F 0xFF jest większy niż char
, może pasować - ale char
jest tym, o co prosi konstruktor QByteArray
.
To QByteArray
konstruktor używany:
QByteArray::QByteArray(const char *data, int size = -1)
Co się dzieje, kiedy deklarujemy 'test_data' jako unsigned char array (unsigned char *), a następnie przesłać ją do tablicy char (char *)? – OnurA
@OnurA Czy na pewno chcesz użyć gwiazdki? Linia, w której znajduje się 'test_data' rzuca" nieprawidłową konwersję z 'int' na 'const unsigned char * " – DBedrenko
Możesz łatwo utworzyć funkcję, która utworzy' QByteArray' z tym, co chcesz, jako argument. – Garf365