Important: Please read the Qt Code of Conduct -

Qbytearray printing out the values between 0 and 255

  • Hi guys,

    I've 2 images drawn upon each other, now when I put the image in a Qbytearray and then ask the .data then I normally get values between 0 and 255 right? Now I get those values but some of them are negative.

    Is this normal or is it because there are 2 images on each other that the negative ones are from the foreground image and the other from the background?

    @ QImage myImage;
    QImage myImage2;
    myImage2 = myImage2.convertToFormat(QImage::Format_ARGB32);
    myImage = myImage.convertToFormat(QImage::Format_ARGB32);

    for(int i = 0; i < 100; i++)
        for(int y = 0; y < 100; y++)
             myImage.setPixel(i,y,qRgba(0, 0, 0, 0));
    QPainter painter(&myImage);
    for (int i=0; i<100; i++)
       for (int j=0; j<100; j++)
          double hue = (double)(i + j + i*j)/361200.0;
          QColor myColor;
          myColor.setHsvF(hue, 1.0, 1.0, 1.0);
          painter.drawPoint(i, j);
    QLabel myLabel2;
    QByteArray ba;
    QBuffer buffer(&ba);;, "JPEG"); // writes image into ba in PNG format
     for(int i = 0; i < ba.size(); ++i)
        cout << (int) << endl;


    kind regards,

  • Hi,

    char QByteArray::at ( int i ) const

    returns signed char. Its values are between -128 and 127. So it is normal.

  • the method is returning a "char value":
    The interpretation of char is dependent on the compiler/OS you are using. I have run into a similar problem with char. msvc 2005 interpret it in the range of 0 and 255 (basically unsigned) and linux/gcc was interpreting as signed char.
    You need to check the interpretation of char of your compiler and the settings.

    You may use also "operator[]": and QByteRef. Check this if it works.

  • Hi,
    Thanks for your help. Is it possible to make an Qbytearray from 2 images that sets a 1 if it is the background image and a 0 if it is the foreground image? Because I'm searching all over the internet for this, but I don't find how to do this..

    Kind regards,

  • I am not sure if you really want to go through a qbytearray. You can manipulate the images directly as it was suggested in "your other post":

Log in to reply