C++ Qt toBase64和Linux base64不同

C++ Qt toBase64和Linux base64不同,c++,linux,bash,qt,C++,Linux,Bash,Qt,主语。为什么会这样? 我尝试了Qt toBase64的所有标志,但没有任何更改 狂欢节: 输出: IVBORW0KGGOAAAANSUHEUGAAAQAAEACAYAABCCHMAAABHNCSVQICAGIFAHKIAAALWSFLZ AAALEWAACXMBAJQCGAAA0JJREFUEJZT3MFT20AURDHNQIWOFLOSQ5S4E7USSBR24MXIIISGSDIT CEX3DJBLJT5J4ULCTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

主语。为什么会这样? 我尝试了Qt toBase64的所有标志,但没有任何更改

狂欢节:

输出:

IVBORW0KGGOAAAANSUHEUGAAAQAAEACAYAABCCHMAAABHNCSVQICAGIFAHKIAAALWSFLZ AAALEWAACXMBAJQCGAAA0JJREFUEJZT3MFT20AURDHNQIWOFLOSQ5S4E7USSBR24MXIIISGSDIT CEX3DJBLJT5J4ULCTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccy0vynmft9x27yhbpakovzw8aneaojgaqdebggicamueaiojabqtacgm AFBMAKCYAEAxAYBiAgDFBACKCQAUEwAodjl7gIUcSZ4n7fV18PNHkpfhKdZyS3Id3GPPnGd0TNgD fmnP+Ik1+51NVOC97Styvajamqgaygiaxqgaigkafbmakcyauewaojgaqdebggicamueaiojabqt ACGMAFBMACSBK/SML6GGSLSfwdggocamueajabQTACGMAFBMakcyAEAXAYBIAGDFBACKCQAU EwAoJgBQTACgmABAscvZA0xyS3Id3GP08+9EKXYDE1YTPA1PSPAV7SST44ECHELEBVDKJ3NZIZ 87SZbYHrcF9+v/YJ13M6RWBQTACGMABAMQGAYGIAXQQIGKAFBMAKCYAUEWAOJGAQDEBGGICAMUE AIoJABQTACj2cPL3b0m+nTwDnOkxJx4u4h8AFBMAKCYAUEwAoJgAQDEBgGICAMUEAIoJABQTACgm AFBMAKCYAEAxAYBiAgDFBACKXc4eYJLXJMfgHtckT8OT8BH4vSxiS/I2YW0LzWKtv7aM2xaa5Z95 通过BIAGDFBACKCQAUEWAOJGBQTACGMABAMQGAYGIAXQQIGKAFBMAKCYAUEWAOJGAQDEBMO8XYYP1 X9bjXzwH/OAAQDEBGGGICAMUEAIOJABQTACGMAFBCYAEAXAYBIAGDFBACKCQAUEWAOJGBQTACG 2OXk7z+SPE/aZ8YeM2bZfqwVvGT83lyT3Ab3mGXP5/u9HBP2YCF7krdF1jbherYFruN97ROuh594由BIAGDFFBACKQUEWAOJGBQTACGMAAMBAMQGAYGAXQQQIGKAFBMAKYAUEWAOJGAAAAAAAAAAAAAAAAAA提供 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa W58TNGAAABJRU5ERKJGG==

Qt:

输出:

Ivborw0KggoaaaAnsuhueugaaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaA3cY8-cZ3RM2AN-ac4iTX7nWe-hz3uy8Akaxaybayagbacqgaygiaqgaigkafbacywaajgt-wwwvoyawtj_aoaagiaqqgafbacqgafbacqbacqgafbacygacygacqbacy9kdthjl3czyqqcqcqcqwj7;-yqgacqgafbacqgafbacqajjgjjjjjjjjjjjgqqqcqajjjjjv922cqcqcqgjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjv6-wjjjjjjjjjjv6-wqgacqgacqgacqgacqqq这是一个非宗教化的非宗教化的非宗教化的非宗教化的非宗教化的非宗教化的非宗教化的非宗教化的非宗教化的非宗教化的非宗教化的非宗教化的非宗教化的非宗教化的非宗教化的非宗教化的非非宗教化的非宗教化的非宗教化非非宗教化非宗教化非宗教化非非宗教化非宗教化非非宗教化非宗教化非非非宗教化非非非非宗教化非非宗教化非非非非宗教化非宗教化非非非非非非非非宗教化非宗教化非宗教化非宗教化非非非宗教化非宗教化非宗教化非非非非非非非宗教化非宗教化非宗教化非宗教化非宗教化非宗教化非宗教化非宗教化非非宗教化非宗教化非宗教化非非非非非非非宗教化非宗教化非宗教化非宗教化非宗教化非宗教化非非非宗教化非非非非非非宗教化非非非非非非女朋友GgicamueaijabqtacgmafbacyAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaCfAaAaAaAaAaAaAaAaAaAaCfAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaA


你在比较两种不同的东西

cat Invader_1.png | base64
输出入侵者1.png的base64二进制内容

QImage image;
image.load("/home/undead/Pictures/1489180309_Invader_1.png");
image.save(&buffer, "PNG");
buffer.close();
bytes_array = bytes_array.toBase64();
1489180309\u Invader\u 1.png
转换为像素图像并返回到png,然后输出新png的base64二进制内容

正如@JustRufus和@TobySpeight所述,可以使用不同的设置(例如压缩级别)和/或元数据创建相同图像的PNG,从而产生不同的二进制内容

如果要进行比较,应修复Qt代码以读取文件:

QFile file("/home/undead/Pictures/1489180309_Invader_1.png");
file.open(QFile::ReadOnly);
QByteArray data = file.readAll();
file.close();
data = data.toBase64();

如何定义
缓冲区
字节数组
呢?如果我没有弄错的话,PNG有压缩级别。当您执行
image.save(&buffer,“PNG”)QImage可以保存在不同的级别。我们可以验证输入是否完全相同吗?创建新PNG时,不仅压缩,元数据(甚至元数据项的顺序)也可能不同。@TobySpeight谢谢,我已经用您的评论更新了答案。
QImage image;
image.load("/home/undead/Pictures/1489180309_Invader_1.png");
image.save(&buffer, "PNG");
buffer.close();
bytes_array = bytes_array.toBase64();
QFile file("/home/undead/Pictures/1489180309_Invader_1.png");
file.open(QFile::ReadOnly);
QByteArray data = file.readAll();
file.close();
data = data.toBase64();