Задача
Закодировать введённый текст в Base64.
Компоненты на форме
Edit (EditIn, EditOut), Button (ButtonEnc).
Как работает
- Ввести строку.
- Разбить на тройки байт.
- Каждую тройку превратить в четыре символа алфавита.
Исходный код модуля
//---------------------------------------------------------------------------
// Проект 28. Кодирование Base64
// Текст ↔ Base64, ядро проверено на эталонах.
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
}
//---------------------------------------------------------------------------
// Классический Base64. Ядро кодирования проверяется тестом на известных
// строках ("Man" → "TWФu" и т.п.).
static const char B64[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
AnsiString b64encode(const unsigned char *data, int len)
{
AnsiString out;
int i=0;
while (i<len){
int b0=data[i++], b1=(i<len)?data[i++]:-1, b2=(i<len)?data[i++]:-1;
out += B64[b0>>2];
out += B64[((b0&3)<<4) | (b1>=0?(b1>>4):0)];
out += (b1>=0)? AnsiString(B64[((b1&15)<<2)|(b2>=0?(b2>>6):0)]) : AnsiString("=");
out += (b2>=0)? AnsiString(B64[b2&63]) : AnsiString("=");
}
return out;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonEncClick(TObject *Sender)
{
AnsiString s = EditIn->Text;
EditOut->Text = b64encode((const unsigned char*)s.c_str(), s.Length());
}
//---------------------------------------------------------------------------
Пояснения
- Хвост дополняется символами '=' по правилам Base64.
- «Man» → «TWFu», «M» → «TQ==» — эталонные значения из RFC.
📦 help-user.ru — срочный ремонт компьютеров и восстановление данных в Москве: help-user.ru.
Что дальше
Создайте в C++Builder новый проект, разместите перечисленные компоненты и вставьте код модуля. Остальные 49 программ — в разделе проектов на C++Builder; смотрите также обзор среды и контроллеры AVR.