Преобразование QString в QByteArray с использованием toUtf8 (), в результате чего получается QByteArray с дополнительными символами - PullRequest
0 голосов
/ 05 апреля 2019

Когда я конвертирую QString в QByteArray, я вижу, что QByteArray имеет некоторые дополнительные символы.

Мне нужно это сохранить изображение в строковом формате, а затем прочитать строку, преобразовать эту строку в Qbytearray и загрузить изображение обратно.

void WorkWithImagesForSerialization_1()
{
    QImage original_image("someicon.png");
    if (original_image.isNull() != true)
    {
        QByteArray original_bytearray;
        QBuffer original_buffer(&original_bytearray);
        original_buffer.open(QIODevice::WriteOnly);
        original_image.save(&original_buffer, "png"); // writes image into ba in PNG format

        QString original_string;

        // PMJ : I did this because, constructing QString from byte arry would stop after finding first terminating character
        for (int i=0;i<original_bytearray.size();++i)
        {
            original_string[i] = original_bytearray[i];
        }


        QByteArray second_bytearray = original_string.toUtf8();
        // original_string =  "\211PNG\r\n\032\n\0.....
        // second_bytearray = "Â\211PNG\r\n\032\n\0....

        // Since, image is loaded from byte array, below image second_image is null.
        QImage second_image;
        second_image.loadFromData(second_bytearray);
        // second_image is null here
    }
}

Я ожидаю, что преобразование QByteArray должно быть правильным, чтобы я мог перезагрузить изображение.

...