いくつかのバイナリデータを含むbase64でエンコードされた文字列をデコードしようとしています。文字列に含まれる文字が1つだけの場合もあります。残念ながら、関数QByteArray :: fromBase64()は、より大きな入力文字列でのみ機能します。
このコードは、より大きな入力文字列に対して機能します。
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);
その後val
、「ykw8」でエンコードされた正しいデータである13257788が含まれます。ただし、fromBase64()の引数として「u」を送信すると、結果の配列(text
)のサイズは0になります。したがって、変数には0val
も含まれますが、46である必要があります。
入力文字列、つまり「u ==」などをパディングしようとしましたが、のサイズtext
は常に0でした。では、fromBase64()で短い文字列を正しくデコードするにはどうすればよいですか?