我想解码一个base64编码的字符串,它包含一些二进制数据。该字符串有时只包含一个字符。不幸的是,函数QByteArray :: fromBase64()只适用于较大的输入字符串。Qt - 从base64解码二进制序列
此代码的工作对我来说更大的输入字符串:那val
包含13257788
QByteArray text = QByteArray::fromBase64("ykw8");
unsigned int val = 0;
for(int i = 0; i < text.length(); i++)
val |= (text.data()[text.length() - i - 1] & 0xff) << (i*8);
后,这是在“ykw8”编码正确的数据。但是,如果我提交“u”作为fromBase64()的参数,则结果数组(text
)的大小为0.变量val
因此也包含0,尽管它应该是46.
我试过填充输入字符串,i。即“u ==”和类似的,但text
的大小总是0. 那么我怎么从Base64()正确解码短字符串?
你确定'“你好”是一个正确的base64编码字符串吗?因为'QByteArray :: fromBase64()'跳过了它无法解码的东西。 – UmNyobe
如果使用'QByteArray :: toBase64()'将46转换为base64,则会得到“Lg ==”。所以很可能“U”不是一个有效的base64编码字符串(根据RFC 2045,Qt的实现基于此字符串),正如UmNyobe已经评论过的那样。 – 2012-08-23 15:25:05