フリーソフト

« [BCB] フォームが最大化(最小化)されているか調べる | トップページ | [BCB] フォルダを削除する »

[BCB] バイナリデータをBase64エンコードする

入力されたバイナリデータをBase64エンコードする関数です。引数Bufには入力データ列を、Lengthにはその長さを指定します。エンコードの結果はAnsiString型の文字列で返されます。

AnsiString __fastcall Encode64(Byte *Buf,int Length)
{
 char *Codes64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
 int Byte3=0;
 AnsiString Result="";

 for (int i=0;i<Length;i++) {
  Byte3=(Byte3<<8)+(int)Buf[i];
  if ((i+1)%3==0) {
   Result=Result+Codes64[(Byte3>>18)&0x3F];
   Result=Result+Codes64[(Byte3>>12)&0x3F];
   Result=Result+Codes64[(Byte3>>6 )&0x3F];
   Result=Result+Codes64[(Byte3  )&0x3F];

   Byte3=0;
  }
 }

 int Rest=Length%3;
 switch (Rest) {
 case 1:
  Byte3=Byte3<<4;
  Result=Result+Codes64[(Byte3>>6 )&0x3F];
  Result=Result+Codes64[(Byte3  )&0x3F];
  Result=Result+"==";
  break;
 case 2:
  Byte3=Byte3<<2;
  Result=Result+Codes64[(Byte3>>12)&0x3F];
  Result=Result+Codes64[(Byte3>>6 )&0x3F];
  Result=Result+Codes64[(Byte3  )&0x3F];
  Result=Result+"=";
  break;
 }
 return Result;
}

« [BCB] フォームが最大化(最小化)されているか調べる | トップページ | [BCB] フォルダを削除する »

C++Builder」カテゴリの記事

アルゴリズム」カテゴリの記事

コメント

この記事へのコメントは終了しました。