Главная страница
    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.035 c
6-1075125258
nesovsemlamer
2004-01-26 16:54
2004.04.04
Передача изображения рабочего стола по протоколу TCP


14-1078712199
Kyrt
2004-03-08 05:16
2004.04.04
Accel EDA


1-1079266625
Vasek
2004-03-14 15:17
2004.04.04
Как сделать так что-бы меню выпадало при нажатии на пункт меню?


1-1079543066
Chcnger
2004-03-17 20:04
2004.04.04
Факториал


6-1075036701
один из многих
2004-01-25 16:18
2004.04.04
TCP/IP





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский