Convert unsigned char[10] to QBytearray;

24,294

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.

Share:
24,294
SamuelNLP
Author by

SamuelNLP

Updated on July 18, 2022

Comments

  • SamuelNLP
    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
    SamuelNLP about 11 years
    should I create a new char *array and pass the data from buf first to the array and then convert it?
  • SamuelNLP
    SamuelNLP about 11 years
    well I need it. I get error: invalid static_cast from type 'unsigned char [10]' to type 'char*'
  • hyde
    hyde about 11 years
    My unedited answer used static_cast, here's linked question for why it does not work: stackoverflow.com/questions/10151834/…