【C#】stringをBASE64エンコードする(ためにstringをbyte[]に変換する)

主題はBASE64エンコードです

BASE64エンコード

バイナリをBASE64エンコードするにはSystem.Security.Cryptography.ToBase64Transformクラス内のTransformBlockTransformFinalBlockメソッドを使います
それぞれ定義はこうです

public int TransformBlock(  //―Blockメソッド
        byte[] inputBuffer,
        int inputOffset,
        int inputCount,
        byte[] outputBuffer,
        int outputOffset
);
public byte[] TransformFinalBlock(  //―FinalBlockメソッド
        byte[] inputBuffer,
        int inputOffset,
        int inputCount
);

引数の上3つは両方同じですね
順に入力データとオフセット(配列のどこから入力を始めるか)と入力のサイズ
―Blockメソッドの引数下二つはエンコード結果の受け取り用配列とその サイズ オフセット
―FinalBlockメソッドのほうは結果の受け取りを戻り値でやる感じでしょうか

さてここで気づくことが一つ
「これ入力も出力もstringじゃなくてbyte[]だ」ですね
ということでstringbyte[]の相互変換です

string⇔byte[]

stringbyte[]間の変換をするにはSystem.Text.Encodingクラス内のGetBytesGetStringメソッドを使います
それぞれ定義は

public virtual byte[] GetBytes(string s);
public virtual string GetString(byte[] bytes);

見ればわかる簡単なやつです
入れれば、変換されて、帰ってくる
わかりずらいのがEncodingクラスのインスタンスの取得ですね
Encodingクラス内にstaticインスタンスがあるのでそれを適当に使うか、同じくstaticGetEncodingメソッドを使います

public static Encoding UTF8 { get; }
public static Encoding UTF7 { get; }
public static Encoding UTF32 { get; }
public static Encoding Unicode { get; }
public static Encoding BigEndianUnicode { get; }
public static Encoding ASCII { get; }
public static Encoding Default { get; }
public static Encoding GetEncoding(string name);

ちなみにBASE64からのデコードはSystem.Security.Cryptography.FromBase64Transform内の同名メソッドが同じ方法で使えるので説明は省略します