Convert unsigned char[10] to QBytearray;
Solution 1
It's just signedness issue, so this should work:
databuf = QByteArray(reinterpret_cast<char*>(buf), 10);
Or with legacy C-style cast:
databuf = QByteArray((char*)buf, 10);
(Here's one of many many discussions about which you should use.)
Easier alternative is to remove unsigned
from declaration of buf
, if you don't need it there for some other reason.
Note, that if you use that fromRawData
method, it does not copy the bytes, so better be sure buf
won't go out of scope too soon. If unsure, do not use it...
Solution 2
As it says, the argument passed to fromRawData
should be a const char*
, not an unsigned char*
. You could make your array be an array of const char
:
const char buf[10];
The array can be converted to a pointer to its first element which will a const char*
, exacly as fromRawData
expects.
SamuelNLP
Updated on July 18, 2022Comments
-
SamuelNLP almost 2 years
I've seen a lot o questions around this, but so far none worked for me.
I've tried the 2 most common answers but I get the same error.
being but an
unsigned char buf[10];
this,
QByteArray databuf; databuf = QByteArray::fromRawData(buf, 10);
or this,
QByteArray databuf; databuf = QByteArray(buf, 10);
got me the same error,
error: invalid conversion from 'unsigned char*' to 'const char*' [-fpermissive]
any advice?
thank you
-
SamuelNLP about 11 yearsshould I create a new
char *array
and pass the data frombuf
first to the array and then convert it? -
SamuelNLP about 11 yearswell I need it. I get
error: invalid static_cast from type 'unsigned char [10]' to type 'char*'
-
hyde about 11 yearsMy unedited answer used
static_cast
, here's linked question for why it does not work: stackoverflow.com/questions/10151834/…