Base64エンコーディングをプログラムで書こうと思っているのですが、
アルゴリズムがわかりません。
アルゴリズムがわかりやすく載っているサイトをご存知の方、教えてください。
お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

base64は簡単に言えば3byte(24bit)のデータを4つのASCIIのキャラクタ


で表し3byteにならない部分(最後)に関しては=で埋めます。

ちょうどいい解説ページが見つかりました。
http://tokyo.cool.ne.jp/taquino/mailreader/base6 …

他にもbase64のencode/decodeのプログラムソースを公開しているところも
ありますのでそのようなページを参考にするといいと思います。

参考URL:http://tokyo.cool.ne.jp/taquino/mailreader/base6 …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Q32ビットプログラムを64ビットプログラムにしたい

32ビットのアプリケーション(EXE)を、
64ビットのアプリケーション(EXE)に変換することはできませんか?

Aベストアンサー

EXEを変換することは不可能。
EXEを作るときのコンパイラを64ビット対応にする必要がある。

Qbase64->rarとは?

あるサイトに
base64->rar
(数字やアルファベットなどずらっと)

これはどういう意味ですか?
詳しい方教えてください。

Aベストアンサー

当然犯罪です

市販ソフトやシェアウェアなら、お金をだして買ってください
登録して使うフリーウェアなら、自身で登録して使ってください

有料のソフトを権利者が何かのキャンペーン等で
ライセンスを無料発行しているなら兎も角

何の関係も無いサイトで権利者とは無関係の人間(犯罪者)が作った物で
正規ライセンスが取得できると本当に考えたのですか?

これは「使えれば何をしても構わない」と言っている様な物で
「人を殺してもバレなければ構わない」と言っているのと同じ危険な考えです

QBase64とuuencodeの違い

Base64とuuencodeの仕様の違いを教えてください.
uuencodeはヘッダー部にパーミッションやファイル名の
ようなものが付いているみたいなのですが?
そもそもコード化されている内容には互換性があるのでしょうか?
よろしくおねがいいたします.

Aベストアンサー

24bit毎に符号化していくのは共通していますが、その24bitの数を文字に変換していく方法は違います。
BASE64は対応表を基に、uuencodeは単純に32を足して、そのアスキーコードを使って符号化していくようです。
その他にも色々と約束事があるようなので、詳しくは下記URLを見てください。
http://www.hoku-hoku.com/forum/dataroom/mime2.html

QBASE64で0~63以降の数を表現する方法と考え方を教えてください

BASE64で0~63以降の数を表現する方法と考え方を教えてください

http://ja.wikipedia.org/wiki/Base64 にある
0~63の数に対応する文字とデータ(0はA、63は/)の変換表がありますが
64や70、150といった数字を変換するにはどうしたらよいでしょうか?

Aベストアンサー

ふつうの1byte文字は8bitだから256文字を表現する能力があるのに、なぜ64文字だけで変換するのか、という質問だと見ました。
BASE64でエンコードする対象データはバイナリ列なので、それをbyte区切りにする必然性はないわけです(処理速度的にはもちろんbyte区切りの方が有利ですが)。BASE64でエンコードするときには、これを6bitで区切る。すると64文字であらゆるbit列が表現できる、という原理です。
だから、「64以上の数値が出てこないように区切っているので変換表は63までで良い」が回答になります。

70というビット(asciiで言う'F')をエンコードする場合は、
70 = 64 + 4 + 2 = 0b01000110
なので、010001 と 10 という6bitずつに分け、後者はゼロビットを足して六桁にした結果の
010001 100000
を変換して、 Rg が得られる。という操作です。

注意して欲しいのは、63というビット(asciiで言う'?')をエンコードする場合でも、やはり
63 = 32 + 16 + 8 + 4 + 2 + 1 = 0b00111111
001111 110000
変換して、 Pw が得られることになる点です。

そのwikipediaのページにも書いてあるので、注意深く読み直してみてください。

ふつうの1byte文字は8bitだから256文字を表現する能力があるのに、なぜ64文字だけで変換するのか、という質問だと見ました。
BASE64でエンコードする対象データはバイナリ列なので、それをbyte区切りにする必然性はないわけです(処理速度的にはもちろんbyte区切りの方が有利ですが)。BASE64でエンコードするときには、これを6bitで区切る。すると64文字であらゆるbit列が表現できる、という原理です。
だから、「64以上の数値が出てこないように区切っているので変換表は63までで良い」が回答になります。

70と...続きを読む

Qアルゴリズムを変えるプログラム

人工知能的な話です。プログラム自身に、プログラム自身へ(アルゴリズム的な)変更を加えることというのは可能でしょうか?
(ある処理に対して、経験的な情報を元に処理の一部を経験に好ましいような処理に変更する)

具体的に実現が難しいとかいうことではなく、不可能であるか、カナリ厳しいかもれないが理論的には可能であるかということです。うまく説明できないのですがよろしくおねがいします。

Aベストアンサー

ずばり、可能です。
ただし、現状の言語で、実現するのは、かなり高度な技術だと思います。
#2さんのLISPはまさにそれを実現しています。
という回答もありました。
私は、LISPはよくわからないので、現状の言語とはC++やJAVAをさしています。
まだ、市場に出回っているソフトでそれを実現しているソフトはあまりないと思います。
将来的な話になるでしょう。
とにかく、間違いなく言えるのは「可能」であるということです。


このカテゴリの人気Q&Aランキング

おすすめ情報