Форум: "Потрепаться";
Текущий архив: 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