我想解碼一個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