商品サンプル画像
ドラゴンキーパーVSデスメシア
商品ページ
Amazon
収益広告(自動登録)
※Amazonレビュー要確認
商品サンプル画像
キズナ ~日々輝と世々良~
商品ページ
Amazon
収益広告(自動登録)
※Amazonレビュー要確認
商品サンプル画像
戦闘員D参上!
商品ページ
Amazon
収益広告(自動登録)
※Amazonレビュー要確認
商品サンプル画像
隣のクーデレラを甘やかしたら、ウチの合鍵を渡すことになった (7) (角川コミックス・エース)
商品ページ
Amazon
収益広告(自動登録)
※Amazonレビュー要確認
商品サンプル画像
ルパン三世 風魔一族の陰謀
商品ページ
Amazon
収益広告(自動登録)
※Amazonレビュー要確認
記事の概要
base64エンコードの流れ(C#)
作成日:2020-04-23
最終更新日:2020-04-23
記事の文字数:3432
情報技術
base64エンコードの流れ(C#)
概要
本記事ではbase64のエンコードの流れを記載。
最後の方にあるC#コードは、何かの参考になればと載せているだけなので、きちんと動くかはまた微妙。
base64のエンコードの流れ
base64のエンコードの流れは以下の通り。
  1. 元の文字列(abcd)をバイト型に変換
  2. バイト型から2進数に変換し、8桁になるように前0を埋め、すべて結合
  3. 2進数を6文字ごとに区切り、6文字になるように後ろに0を埋める
  4. 専用の変換表から、2進数を文字列に変換する
  5. 文字列の長さが4の倍数になるように、後ろに=を詰める

図にすると以下の通り。
画像クリックで等倍
次からはC#コードを載せています。流れが分かりやすいように冗長的に書いています。テキトーにコピペしてみてもある程度動くと思います。
1.元の文字列(abcd)をバイト型に変換

/**
* 1.元の文字列(abcd)をバイト型に変換
* (abcd)
* -> (0x61, 0x62, 0x63, 0x64)
*/
// 元の文字列をバイト型に変換
Byte[] bytes = System.Text.Encoding.UTF8.GetBytes(pTxt);

pTxtが変換元文字列
2.バイト型から2進数に変換し、8桁になるように前0を埋め、すべて結合

/**
* 2.バイト型から2進数に変換し、8桁になるように前0を埋め、すべて結合
* (0x61, 0x62, 0x63)
* -> (1100001, 1100010, 1100011, 1100100)
* -> (01100001, 01100010, 01100011, 01100100)
* -> (01100001011000100110001101100100)
*/
String unionBinaryNumTxt = "";
foreach (Byte b in bytes)
{
// バイト型から2進数に変換
String binaryNumTxt = Convert.ToString(b, 2);

// 8桁になるように前0を埋める
String paddingBinaryNumTxt = binaryNumTxt.PadLeft(8, '0');

// 結合
unionBinaryNumTxt += paddingBinaryNumTxt;
}

3.2進数を6文字ごとに区切り、6文字になるように後ろに0を埋める

/**
* 3.2進数を6文字ごとに区切り、6文字になるように後ろに0を埋める
* (01100001011000100110001101100100)
* -> (011000, 010110, 001001, 100011, 011001, 00)
* -> (011000, 010110, 001001, 100011, 011001, 000000)
*/
int splitNumber = 6;
List split6TxtList = new List();
for(int i = 0;true;i++)
{
if (unionBinaryNumTxt.Length <= i * splitNumber) // 最後まで区切ったら終了
{
break;
}

// 2進数を6文字ごとに区切る
String split6Txt = "";
if (unionBinaryNumTxt.Length < (i + 1) * splitNumber)
{
split6Txt = unionBinaryNumTxt.Substring(i * splitNumber, unionBinaryNumTxt.Length % splitNumber);
} else {
split6Txt = unionBinaryNumTxt.Substring(i * splitNumber, splitNumber);
}

// 6文字になるように後ろに0を埋める
String paddingSplit6Txt = split6Txt.PadRight(splitNumber, '0');
split6TxtList.Add(paddingSplit6Txt);
}

4.専用の変換表から、2進数を文字列に変換する

/**
* 4.専用の変換表から、2進数を文字列に変換する
* (011000, 010110, 001001, 100011, 011001, 000000)
* -> (Y, W, J, j, Z, A)
* -> (YWJjZA)
*/
// 専用の変換表を定義
IDictionary cTable = new Dictionary()
{
{"000000", "A"},
{"000001", "B"},
{"000010", "C"},
{"000011", "D"},
{"000100", "E"},
{"000101", "F"},
{"000110", "G"},
{"000111", "H"},
{"001000", "I"},
{"001001", "J"},
{"001010", "K"},
{"001011", "L"},
{"001100", "M"},
{"001101", "N"},
{"001110", "O"},
{"001111", "P"},
{"010000", "Q"},
{"010001", "R"},
{"010010", "S"},
{"010011", "T"},
{"010100", "U"},
{"010101", "V"},
{"010110", "W"},
{"010111", "X"},
{"011000", "Y"},
{"011001", "Z"},
{"011010", "a"},
{"011011", "b"},
{"011100", "c"},
{"011101", "d"},
{"011110", "e"},
{"011111", "f"},
{"100000", "g"},
{"100001", "h"},
{"100010", "i"},
{"100011", "j"},
{"100100", "k"},
{"100101", "l"},
{"100110", "m"},
{"100111", "n"},
{"101000", "o"},
{"101001", "p"},
{"101010", "q"},
{"101011", "r"},
{"101100", "s"},
{"101101", "t"},
{"101110", "u"},
{"101111", "v"},
{"110000", "w"},
{"110001", "x"},
{"110010", "y"},
{"110011", "z"},
{"110100", "0"},
{"110101", "1"},
{"110110", "2"},
{"110111", "3"},
{"111000", "4"},
{"111001", "5"},
{"111010", "6"},
{"111011", "7"},
{"111100", "8"},
{"111101", "9"},
{"111110", "+"},
{"111111", "/"}
};

// 2進数を文字列に変換する
String base64Txt = "";
foreach (String split6Txt in split6TxtList) {
base64Txt += cTable[split6Txt];
}

5.文字列の長さが4の倍数になるように、後ろに=を詰める

/**
* 5.文字列の長さが4の倍数になるように、後ろに=を詰める
* (YWJjZA)
* -> (YWJjZA==)
*/
String paddingBase64Txt = base64Txt;
if (base64Txt.Length % 4 != 0)
{
paddingBase64Txt = base64Txt.PadRight(base64Txt.Length + (4 - base64Txt.Length % 4), '=');
}

paddingBase64Txtがbase64エンコードの最終結果文字列
コメントログ
※コメントは最新50件が表示されます
コメント投稿




画面下部の「コンタクト」からも連絡可能です。
管理人ツイート
商品サンプル画像
Thunderbolt Fantasy 東離劍遊紀 最終章
商品ページ
Amazon
収益広告(自動登録)
※Amazonレビュー要確認
商品サンプル画像
乙女ゲームのヒロインで最強サバイバル@COMIC 第7巻 (コロナ・コミックス)
商品ページ
Amazon
収益広告(自動登録)
※Amazonレビュー要確認
商品サンプル画像
舞台『東京リベンジャーズ』~天竺編~
商品ページ
Amazon
収益広告(自動登録)
※Amazonレビュー要確認
商品サンプル画像
わんだふるぷりきゅあ!ざ・むーびー!ドキドキ♡ゲームの世界で大冒険!(Amazon.co.jp限定Tシャツ購入権利コード付き)(7/18 正午まで)
商品ページ
Amazon
収益広告(自動登録)
※Amazonレビュー要確認
管理人作品宣伝
【アークナイツ】獣歌う廃音楽堂:LT-6 ヴィヴィアナ
動画 / 最終更新:2025-06-10
真なる強者にギミックなど不要…真なる強者にギミックなど不要

YouTubeで閲覧するニコニコ動画で閲覧する利用素材等の詳細情報
ぱらぱら工房
Webサイト / 最終更新:2025-03-26
jpegやpngなどの静止画画像ファイルを複数枚結合して、GIFやAPNG(アニメーシ…jpegやpngなどの静止画画像ファイルを複数枚結合して、GIFやAPNG(アニメーション付きPNG)を作成するだけのWebツールです。

HPで閲覧する利用素材等の詳細情報返礼特典
作品一覧はこちら
関連ページ
JavaScriptでアナログ時計とデジタル時計を表示するコード
最終更新日:2025-05-29
概要 最近アナログ時計を使ったので、アナログ時計を表示するJavaScriptコードを載せます。 …
記事を閲覧する
three.js・three-vrm.jsを使用して、VRoidをWebページ上に表示する Part-03
最終更新日:2025-04-20
概要 three.js・three-vrm.jsを使用して、VRoidをWebページ上に表示する方…
記事を閲覧する
three.js・three-vrm.jsを使用して、VRoidをWebページ上に表示する Part-02
最終更新日:2025-04-15
概要 three.js・three-vrm.jsを使用して、VRoidをWebページ上に表示する方…
記事を閲覧する
three.js・three-vrm.jsを使用して、VRoidをWebページ上に表示する Part-01
最終更新日:2025-04-13
概要 three.js・three-vrm.jsを使用して、VRoidをWebページ上に表示する方…
記事を閲覧する
GIF / APNG(アニメーション付きPNG)ファイル解析ページ
最終更新日:2025-03-31
ファイル読込・操作 以下に調べたいファイルを読み込ませてください。 ファイル情報 カラーパレットを…
記事を閲覧する
gifler.js仕様メモ
最終更新日:2025-03-23
本ページの趣旨 「gifler.js」という、gifアニメーションをcanvasに簡単に表示できる…
記事を閲覧する
【プログラミング】実例で分かるかもしれない再帰処理
最終更新日:2024-12-15
本ページは以下動画の台本を書き起こしたものです 解説の趣旨・方向性 皆さん、こんばんは今回はプログ…
記事を閲覧する
SNSツイート一元化対応(Twitter・Misskey・Mastodon・Bluesky)-公開
最終更新日:2024-12-06
概要 SNSツイートを一元化するためのツールを作成しています(古い記事ですが、こちらのページで紹介…
記事を閲覧する
SNSツイート一元化対応(Twitter・Misskey・Mastodon・Bluesky)-Python
最終更新日:2024-10-13
概要 概要 SNSのツイートを一元化する際の備忘録というかPythonコードの共有です。 それぞれ…
記事を閲覧する
Windows-PowerShellを使用してのフォルダ内のファイル名を連番にリネームする
最終更新日:2024-10-08
以下PowerShellコードを実行することで、フォルダ内のすべてのファイルのファイル名を「0001…
記事を閲覧する
本サイトのタグ一覧
NovelAIR18VRoidWebサイト作成Webツールととモノ。アークナイツアークナイツ-ステージ攻略日記アズールレーンアズールレーン-日記ウマ娘ギャラリーゲームデビラビローグネットスラング系プログラミングホラーポケットタウン怪談気ままな日記情報技術情報技術-WebAPI知的財産権統合戦略白夜極光本サイトについて魔王スライム様がんばる!漫画
人気記事
メイド・オブ・ザ・デッド-攻略お助け情報
最終更新日:2024-05-01
スコア:779.5866 pt
ネタバレ注意! 本ページは『メイド・オブ・ザ・デッド』の情報を記録しているものです。 攻略の参考に…
記事を閲覧する
ポケットタウン_パズル一覧
最終更新日:2025-05-02
スコア:702.8834 pt
グレーのピースの数 (Number of gray pieces):検索グレーピースの数を入力して、…
記事を閲覧する
剣と魔法と学園モノ。2G - パーティ編成確認ツール
最終更新日:2024-05-09
スコア:179.7872 pt
ツール概要 ととモノ。2Gのパーティ編成を考える際に使うツールです。 あくまでストーリークリアまで…
記事を閲覧する
アークナイツ-常設商品-理性換算
最終更新日:2024-04-28
スコア:136.1702 pt
概要 "常設商品でお得な商品はどれか"というのを理性に換算して一覧化したものとなります。 絶対的に…
記事を閲覧する
本サイトについて
最終更新日:2025-06-11
スコア:121.0342 pt
本サイトの概要 概要 個人ブログのようなものです。とくにジャンルはありません。 本サイト内の情報に…
記事を閲覧する
黒バス:キセキの世代級の人たちの技一覧
最終更新日:2024-07-21
スコア:114.3529 pt
黒バスのキセキの世代級の人たちの技一覧です 概要 黒バスのキセキの世代級の人たちの技を記載したもの…
記事を閲覧する
ゲーム『イカれた狩場の看板娘』の紹介・レビュー
最終更新日:2025-05-01
スコア:105.5385 pt
記事概要 イカれたゲームを紹介するぜ! イカれた狩場の看板娘! 以上だ! ちなみにそんなイカれてな…
記事を閲覧する
地獄先生ぬ~べ~で好きな切ないエピソード
最終更新日:2025-05-19
スコア:92.1905 pt
概要 初代というべきか、週刊少年ジャンプで連載されていた地獄先生ぬ~べ~の切ないエピソードの中で好…
記事を閲覧する
最新記事
htmlタグ混在のテキストをhtmlタグとプレーンテキストで分けるJavaScriptコード
最終更新日:2025-06-20
概要 「よくある質問は a href="/" こ span ち /span ら /a です」 とい…
記事を閲覧する
htmlタグ混在のテキストを1行ずつ左から右へワイプ表示する - JavaScript / CSSコード
最終更新日:2025-06-16
JavaScript全文コード 使い方 以下のJavaScriptとCSSコードを読み込んで、Te…
記事を閲覧する 返礼特典
htmlタグ混在のテキストを1行ずつ左から右へワイプ表示する
最終更新日:2025-06-16
概要 ここでは以下のようにテキストを一行ずつ左から右に表示するJavaScriptコードを載せてい…
記事を閲覧する
本サイトについて
最終更新日:2025-06-11
本サイトの概要 概要 個人ブログのようなものです。とくにジャンルはありません。 本サイト内の情報に…
記事を閲覧する
商品サンプル画像
グッズ
商品ページ
Amazon
収益広告(自動登録)
※Amazonレビュー要確認