Convert unsigned char[10] to QBytearray;

SamuelNLP picture SamuelNLP · Mar 11, 2013 · Viewed 23k times · Source

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

Answer

hyde picture hyde · Mar 11, 2013

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...