Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];

Вниз

Преобразование 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.043 c
1-1079530604
Аноним
2004-03-17 16:36
2004.04.04
DrawGrid


3-1077856645
ProgC
2004-02-27 07:37
2004.04.04
Как найти редактируемую запись после Commit а


6-1076571983
d_s
2004-02-12 10:46
2004.04.04
Входяшие подключения


4-1074877133
Miau
2004-01-23 19:58
2004.04.04
Как узнать, что форму перемещают ?


1-1079283255
Andy BitOff
2004-03-14 19:54
2004.04.04
Коммандная строка и/или не запуск второй копии.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский