Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.04;
Скачать: CL | DM;

Вниз

Преобразование Base64   Найти похожие ветки 

 
Lods   (2004-03-09 21:27) [0]

Я вот нашел код:

const
BASE64_TABLE: string =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

procedure EncodeUnit(const AIn1, AIn2, AIn3: Byte; var VOut: Cardinal);
var
LUnit: packed record
 case Integer of
  0: (Byte1, Byte2, Byte3, Byte4: Byte);
  1: (Whole: Cardinal);
end;
begin
LUnit.Byte1 := ord(BASE64_TABLE[((AIn1 shr 2) and 63) + 1]);
LUnit.Byte2 := ord(BASE64_TABLE[(((AIn1 shl 4) or (AIn2 shr 4)) and 63) + 1]);
LUnit.Byte3 := ord(BASE64_TABLE[(((AIn2 shl 2) or (AIn3 shr 6)) and 63) + 1]);
LUnit.Byte4 := ord(BASE64_TABLE[(Ord(AIn3) and 63) + 1]);
VOut := LUnit.Whole;
end;

function Encode64(const Src: string): string;
var
LBuffer: string;
LSize: Integer;
LLen: Integer;
LBufSize: Integer;
LPos: Integer;
LIn1, LIn2, LIn3: Byte;
LUnit: packed record
 case Integer of
  0: (Byte1, Byte2, Byte3, Byte4: Byte);
  1: (Whole: Cardinal);
end;
begin
Result := "";
LIn3 := 0;
LBufSize := Length(Src);
if LBufSize = 0 then Exit;

SetLength(Result, ((LBufSize + 2) div 3) * 4);
LLen := 0;
LBuffer := Src;
LPos := 1;
while (LPos <= LBufSize) do
 begin
  LIn1 := Byte(LBuffer[LPos]);
  Inc(LPos);
  if (LPos <= LBufSize) then
   begin
    LIn2 := Byte(LBuffer[LPos]);
    Inc(LPos);
    if (LPos <= LBufSize) then
     begin
      LIn3 := Byte(LBuffer[LPos]);
      Inc(LPos);
      LSize := 3;
     end
    else
     begin
      LIn3 := 0;
      LSize := 2;
     end;
   end
  else
   begin
    LIn2 := 0;
    LSize := 1;
   end;
  EncodeUnit(LIn1, LIn2, LIn3, LUnit.Whole);
  Move(LUnit, Result[LLen + 1], 4);
  Inc(LLen, 4);
  if (LSize < 3) then
   begin
    Result[LLen] := FILL_CHAR;
    if (LSize = 1) then Result[LLen - 1] := FILL_CHAR;
   end;
 end;
end;


Но компилятор ругается, не знает что такое FILL_CHAR


 
Pat ©   (2004-03-10 00:24) [1]

А что такое FILL_CHAR?


 
Gero ©   (2004-03-10 00:28) [2]

Я тоже нашел код:

ShowMessage(HELLO_WORLD_CONST);

Но компилятор ругается. Матом.


 
Алхимик ©   (2004-03-10 00:40) [3]

Константа символьная. Иль переменная. Тоже символьная.


 
Lods   (2004-03-10 19:33) [4]

А, так вы тут оффигенные шутники... здорово.

Может, кто-нибудь скажет по существу?
Могу повторить - мне нужен алгоритм кодирования Base64. Я просто сказал, что нашел код в интернете, тогдп может быть кто подскажет что такое FILL_CHAR?

Или другой какой-нибудь код...


 
Warrior ©   (2004-03-10 21:31) [5]

> А, так вы тут оффигенные шутники... здорово

А Вы не знали? На этом сайте собрались все лучшие шутники инета.

> быть кто подскажет что такое FILL_CHAR

Вы посты вобще читаете? [3]


 
Lods   (2004-03-10 22:18) [6]

Вы посты вобще читаете? [3]

Что, типа еще раз пошутил? Поздравляю! Ежу понятно, что если функция должна вернуть строку, то Result[LLen] := FILL_CHAR;
это строка! Блин...


 
Никто ©   (2004-03-10 22:20) [7]

Не строка, а символ...Блин...


 
Алхимик ©   (2004-03-10 22:26) [8]


> [6] Lods   (10.03.04 22:18)
> Вы посты вобще читаете? [3]
>
> Что, типа еще раз пошутил? Поздравляю! Ежу понятно, что
> если функция должна вернуть строку, то Result[LLen] := FILL_CHAR;
> это строка! Блин...


На лицо неадекватное восприятие окружающей действительности...


 
vuk ©   (2004-03-10 22:30) [9]

Если ничего не путаю, то этот символ для Base64 - "="
т.е
const
 FILL_CHAR = "=";


 
Nikolay M. ©   (2004-03-11 09:27) [10]

http://delphiworld.narod.ru/base/base64_encode_decode.html
не спасет отца русской демократии?


 
Lods   (2004-03-11 19:47) [11]

Nikolay M
вполне возможно, что и спасет :)
Спасибо



Страницы: 1 вся ветка

Текущий архив: 2004.04.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.746 c
9-1063465508
Sp@wN
2003-09-13 19:05
2004.04.04
Передача поверхности в процедуру ...


1-1079696024
zamkom
2004-03-19 14:33
2004.04.04
Как разобраться с датой


1-1079588415
tatar
2004-03-18 08:40
2004.04.04
Copyfile RenameFele по маске


1-1079624863
Переяслов Григорий
2004-03-18 18:47
2004.04.04
Перемещение кнопок по тулбару


8-1069859128
TitanDesign
2003-11-26 18:05
2004.04.04
PNG в Delphi