[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