Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 02.05.2008, 16:03   #1
BlackOmen
Форумчанин
 
Аватар для BlackOmen
 
Регистрация: 27.02.2008
Сообщений: 54
Репутация: 10
По умолчанию base64

Выложите, пожалуйста, функцию, осуществляющую данный вид кодирования.
BlackOmen вне форума   Ответить с цитированием
Старый 02.05.2008, 16:19   #2
prizrak1390
-=PriZraK=-
Форумчанин
 
Аватар для prizrak1390
 
Регистрация: 12.12.2007
Адрес: Волгоград
Сообщений: 399
Репутация: 109

icq: 487770040
skype: uraneko13
По умолчанию

Вроде бы так...
Код:
const 
  Codes64 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/'; 

function Encode64(S: string): string; 
var 
  i: Integer; 
  a: Integer; 
  x: Integer; 
  b: Integer; 
begin 
  Result := ''; 
  a := 0; 
  b := 0; 
  for i := 1 to Length(s) do 
  begin 
    x := Ord(s[i]); 
    b := b * 256 + x; 
    a := a + 8; 
    while a >= 6 do 
    begin 
      a := a - 6; 
      x := b div (1 shl a); 
      b := b mod (1 shl a); 
      Result := Result + Codes64[x + 1]; 
    end; 
  end; 
  if a > 0 then 
  begin 
    x := b shl (6 - a); 
    Result := Result + Codes64[x + 1]; 
  end; 
end; 

function Decode64(S: string): string; 
var 
  i: Integer; 
  a: Integer; 
  x: Integer; 
  b: Integer; 
begin 
  Result := ''; 
  a := 0; 
  b := 0; 
  for i := 1 to Length(s) do 
  begin 
    x := Pos(s[i], codes64) - 1; 
    if x >= 0 then 
    begin 
      b := b * 64 + x; 
      a := a + 6; 
      if a >= 8 then 
      begin 
        a := a - 8; 
        x := b shr a; 
        b := b mod (1 shl a); 
        x := x mod 256; 
        Result := Result + chr(x); 
      end; 
    end 
    else 
      Exit; 
  end; 
end;
__________________
JAZ - Jrock and Anime zOne
prizrak1390 вне форума   Ответить с цитированием
Старый 02.05.2008, 16:30   #3
BlackOmen
Форумчанин
 
Аватар для BlackOmen
 
Регистрация: 27.02.2008
Сообщений: 54
Репутация: 10
По умолчанию

держи спасибо!
BlackOmen вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
кодировать в base64 furstenberg Общие вопросы Delphi 13 29.08.2008 17:02


03:55.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.