- 締切済み
Turbo C++での文字列のエンコード(Base64)
Turbo C++(Explorer)を使っているのですが、文字列のエンコードってどうすればできるのでしょうか? 下記のような記事も見たのですが自分の使用している環境ではIndyコンポーネントがありません。 何か良い方法ありますでしょうか?お願いします。 -------------------------------- Base64エンコード・デコードする機能は、Indyコンポーネントで提供されています。 Base64のエンコードにはTIdEncoderMIME、デコードにはTIdDecoderMIMEを使います。 //文字列のエンコード AnsiString Src = "こんにちは、世界"; AnsiString Ret = IdEncoderMIME1->Encode(Src); // Ret == "grGC8YLJgr+CzYFBkKKKRQ==" --------------------------------
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- sakusaker7
- ベストアンサー率62% (800/1280)
Base64はそんなに複雑なルールじゃないので自分で組んでもそれほどの手間じゃないと思います。 RFC3548 ベース64とベース32とベース16コード化 http://www5d.biglobe.ne.jp/~stssk/rfc/rfc3548j.html Base64へのエンコーディングの場合、簡単に言えば 3バイト取ってきて、4×6bitのデータとみなして 対応する文字に変換するというものです。 Google Code Searchでサンプル見つけましたので参考までに。 The library is free for all purposes without any express guarantee it works. ということなのでライセンス上も問題ないでしょう。 dropbear-0.48.1/libtomcrypt/src/misc/base64/ - Google Code Search http://www.google.com/codesearch?hl=ja&q=show:QyOP7SPoOuk:kPT6ppIZ_l8&sa=N&ct=rdp&cs_p=http://ftp.osuosl.org/pub/nslu2/sources/dropbear-0.48.1.tar.gz&cs_f=dropbear-0.48.1/libtomcrypt/src/misc/base64
- asuncion
- ベストアンサー率33% (2127/6290)
#1の者です。 エンコード・データのパディングは0x00ではなくて'='です。 お詫びして訂正いたします。 目で見える内容でなければならないのだから、 0x00のはずがないです。
- asuncion
- ベストアンサー率33% (2127/6290)
以下の仕様を満たす関数を自作する、というのも一つの手であると思います。 ・入力データから3バイトを取り出す ・取り出した3バイトを6ビットずつ4つに分割する ・4つの6ビットデータの各先頭に2ビット分の0x00を付け加えて、出力する ・入力データがある間、上記の処理を繰り返す ・最後に、出力データ長が4の倍数になるよう、0x00を埋める
お礼
ありがとうございました。 参考にさせていただきます。
お礼
ありがとうございます。 参考URLまで頂き本当に感謝します。