Azure (http://msdn.microsoft.com/en-us/library/dd135726.aspx) の base64 エンコーディングを使用していますが、必要な文字列を取得する方法がわかりません。私は以下を行うC#でこれを行うことができます。
int blockId = 5000;
var blockIdBytes = BitConverter.GetBytes(blockId);
Console.WriteLine(blockIdBytes);
string blockIdBase64 = Convert.ToBase64String(blockIdBytes);
Console.WriteLine(blockIdBase64);
(LINQPadで)出力するもの:
Byte[] (4 items)
| 136 |
| 19 |
| 0 |
| 0 |
iBMAAA==
Qt/C++ でいくつかのアポラチを試しましたが、すべて間違った値を返しました。
const int a = 5000;
QByteArray b;
for(int i = 0; i != sizeof(a); ++i) {
b.append((char)(a&(0xFF << i) >>i));
}
qDebug() << b.toBase64(); // "iIiIiA=="
qDebug() << QByteArray::number(a).toBase64(); // "NTAwMA=="
qDebug() << QString::number(a).toUtf8().toBase64(); // "NTAwMA=="
C# 版と同じ結果を得るにはどうすればよいですか?