[C#] Base64のエンコード、デコードする方法
こんにちは。明月です。
この投稿はC#でBase64のエンコード、デコードする方法に関する説明です。
Base64とはByteタイプになっているバイナリデータをプログラムの間にもっと扱いやすくするため、asciiコードに変換したデータをbase64といいます。
簡単に説明すると「byteデータやstreamデータをstringタイプに変換したことです。そのStringタイプになっているデータもエンコードタイプに関係ないasciiコードになっている」ということで理解するとよいです。
簡単なファイルを読み込んでbase64タイプに変換しましょう。
「hello world」というテキストを作成したファイルを準備しましょう。

そしてそれをbyteタイプに読み込んでbase64に変換しましょう。
using System;
using System.IO;
namespace Example
{
  class Program
  {
    // 実行関数
    static void Main(string[] args)
    {
      // test.txtファイルを読み込む。
      byte[] data = GetFileBinary("d:\\work\\test.txt");
      // base64のライブラリからencodeToString関数を利用してbyte[]タイプをStringタイプに変換する。
      var base64data = System.Convert.ToBase64String(data);
      // コンソールに結果を出力
      Console.WriteLine(base64data);
      
      Console.WriteLine("Press any key...");
      Console.ReadKey();
    }
    // ファイルを呼び込む関数。
    private static byte[] GetFileBinary(String filepath)
    {
      // ファイル情報取得
      var file = new FileInfo(filepath);
      // バッファ設定
      var data = new byte[file.Length];
      // ストリームを生成
      using (var stream = new FileStream(file.FullName, FileMode.Open, FileAccess.Read))
      {
        // ファイルをストリームで読み込んでbyteタイプに変換 
        stream.Read(data, 0, (int)data.Length);
      }
      // 返却
      return data;
    }
  }
}
 
  
結果をみればHello worldのバイナリが暗号コードみたいに変換されました。
また、Bsse64になったコードをStringタイプに変換して出力しましょう。
class Program
{
  static void Main(string[] args)
  {
    // 上のコンソールに出力したBase64コード
    String base64data = "SGVsbG8gd29ybGQ=";
    // byte[]タイプにデコードする。
    byte[] data = System.Convert.FromBase64String(base64data);
    // 結果をみるため、Stringで変換して出力する。
    Console.WriteLine(Encoding.Default.GetString(data));
    Console.WriteLine("Press any key...");
    Console.ReadKey();
  }
}
 
  
コンソールで「Hello world」という結果が表示されました。
プログラム間に通信する時にBase64コードでエンコード、デコードすれば逆にデータが大きくなるので、非効率的です。ただ、byteタイプに送信すればよいからです。
でも、このbase64が必要な時があります。例えば、バイナリタイプをStringタイプに変換する時です。
暗号化する時にも必要な時があります。
ここまでC#でBase64のエンコード、デコードする方法に関する説明でした。
ご不明なところや間違いところがあればコメントしてください。
「Devlopment note / C#」の他投稿
					- [C#] EMailを送信する方法(System.Net.Mail)2020/04/22 19:00:42
 - [C#] ini環境ファイルを使う方法2020/04/22 00:09:39
 - [C#] 環境設定ファイルを扱う方法(System.Configuration)2020/04/20 19:37:57
 - [C#] Reflectionを利用してクラス複製する方法2020/04/17 00:34:33
 - [C#] XMLをXPathを利用してデータを取得する方法2020/04/16 00:47:17
 - [C#] NSoupライブラリを利用してXMLとHTMLをパーシングする方法2020/04/14 19:34:15
 - [C#] 日付フォーマット2020/04/09 20:53:20
 - [C#] ログライブラリ(log4net)を設定する方法2020/04/08 13:04:22
 - [C#] Zipの圧縮ファイルを解凍するコードを作成する方法2020/04/07 11:17:44
 - [C#] Zip圧縮コードを作成する方法2020/04/06 14:56:13
 - [C#] 数字フォーマット(お金表示及び小数点以下表示)2020/04/03 00:38:37
 - [C#] コマンド(cmd)を実行する方法(Processクラス)2020/03/31 07:15:40
 - [C#] FTPに接続してファイルダウンロード、アップロードする方法2020/03/27 19:20:14
 - [C#] HttpWebRequestを利用してウェブページを読み込みする方法2020/03/27 00:23:19
 - [C#] Base64のエンコード、デコードする方法2020/03/26 02:19:50
 
最新投稿
					- check2024/04/10 19:03:53
 - [Java] 64.Spring bootとReactを連結する方法(Buildする方法)2022/03/25 21:02:18
 - [Javascript] Node.jsをインストールしてReactを使う方法2022/03/23 18:01:34
 - [Java] 63. Spring bootでcronスケジューラとComponentアノテーション2022/03/16 18:57:30
 - [Java] 62. Spring bootでWeb-Filterを設定する方法(Spring Security)2022/03/15 22:16:37
 - [Java] JWT(Json Web Token)を発行、確認する方法2022/03/14 19:12:58
 - [Java] 61. Spring bootでRedisデータベースを利用してセッションクラスタリング設定する方法2022/03/01 18:20:52
 - [Java] 60. Spring bootでApacheの連結とロードバランシングを設定する方法2022/02/28 18:45:48
 - [Java] 59. Spring bootのJPAでEntityManagerを使い方2022/02/25 18:27:48
 - [Java] 58. EclipseでSpring bootのJPAを設定する方法2022/02/23 18:11:10
 - [Java] 57. EclipseでSpring bootを設定する方法2022/02/22 19:04:49
 - [Python] Redisデータベースに接続して使い方2022/02/21 18:23:49
 - [Java] Redisデータベースを接続して使い方(Jedisライブラリ)2022/02/16 18:13:17
 - [C#] Redisのデータベースを接続して使い方2022/02/15 18:46:09
 - [CentOS] Redisデータベースをインストールする方法とコマンドを使い方2022/02/14 18:33:07