24
私がしようとしています:をbase64にバイト配列からの変換とバック
- バイト配列を生成します。
- バイト配列をbase64に変換する
- そのbase64文字列をバイト配列に変換し直します。
いくつかの解決策を試しました。たとえば、questionのようなソリューションを試しました。
何らかの理由で、最初と最後のバイト配列が一致しません。ここで使用されるコードは次のとおりです。
using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider())
{
byte[] originalArray = new byte[32];
rng.GetBytes(key);
string temp_inBase64 = Convert.ToBase64String(originalArray);
byte[] temp_backToBytes = Encoding.UTF8.GetBytes(temp_inBase64);
}
私の質問は以下のとおりです。
なぜ "originalArray" と "temp_backToBytesは、" 一致しないのですか? (originalArrayの長さは32、temp_backToBytesの長さは44ですが、その値も異なります)
この場合、前後に変換することはできますか?
働いた、base64では、すべての8ビットのうち、わずか6を使用している場合が、私はエンコードが短くなると思うだろうか? – crawfish
@crawfishエンコーディングは、出力で8ビットのうち6ビットを使用し、2つの最も重要なビットをゼロに設定したままにします。その結果、3バイト(3 * 8 = 24ビット)のグループはすべて4バイトのグループ(4 * 6 = 24ビット)になります。元のバイト数が3で割り切れない場合は、最後に特別なマーカーが追加されます。あなたの場合、32より大きい3で割り切れる次の数字は33、つまり「11 * 3」です。これは、結果が「11 * 4」つまり44バイト長であることを意味します。 – dasblinkenlight
説明のためにありがとう – crawfish