亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? base64.pas

?? base64編碼算法 base64編碼算法
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
unit Base64;

interface

uses Classes;

function  MimeEncodeString (const s: AnsiString): AnsiString;
function  MimeEncodeStringNoCRLF (const s: AnsiString): AnsiString;
function  MimeDecodeString (const s: AnsiString): AnsiString;
procedure MimeEncodeStream (const InputStream: TStream; const OutputStream: TStream);
procedure MimeEncodeStreamNoCRLF (const InputStream: TStream; const OutputStream: TStream);
procedure MimeDecodeStream (const InputStream: TStream; const OutputStream: TStream);
function  MimeEncodedSize (const i: Cardinal): Cardinal;
function  MimeEncodedSizeNoCRLF (const i: Cardinal): Cardinal;
function  MimeDecodedSize (const i: Cardinal): Cardinal;
procedure DecodeHttpBasicAuthentication (const BasicCredentials: AnsiString; out UserId, PassWord: AnsiString);
procedure MimeEncode (const InputBuffer; const InputByteCount: Cardinal; out OutputBuffer);
procedure MimeEncodeNoCRLF (const InputBuffer; const InputByteCount: Cardinal; out OutputBuffer);
procedure MimeEncodeFullLines (const InputBuffer; const InputByteCount: Cardinal; out OutputBuffer);
function  MimeDecode (const InputBuffer; const InputBytesCount: Cardinal; out OutputBuffer): Cardinal;
function  MimeDecodePartial (const InputBuffer; const InputBytesCount: Cardinal;
  out OutputBuffer; var ByteBuffer: Cardinal; var ByteBufferSpace: Cardinal): Cardinal;
function  MimeDecodePartialEnd (out OutputBuffer; const ByteBuffer: Cardinal;
  const ByteBufferSpace: Cardinal): Cardinal;
procedure Base64Encode(InputFile, OutputFile: string);
procedure Base64Decode(InputFile, OutputFile: string);

const
 MIME_ENCODED_LINE_BREAK = 76;
 MIME_DECODED_LINE_BREAK = MIME_ENCODED_LINE_BREAK div 4 * 3;
 BUFFER_SIZE        = MIME_DECODED_LINE_BREAK * 3 * 4 * 16;
 MIME_ENCODE_TABLE  : array[0..63] of Byte = (
  065, 066, 067, 068, 069, 070, 071, 072, // 00 - 07
  073, 074, 075, 076, 077, 078, 079, 080, // 08 - 15
  081, 082, 083, 084, 085, 086, 087, 088, // 16 - 23
  089, 090, 097, 098, 099, 100, 101, 102, // 24 - 31
  103, 104, 105, 106, 107, 108, 109, 110, // 32 - 39
  111, 112, 113, 114, 115, 116, 117, 118, // 40 - 47
  119, 120, 121, 122, 048, 049, 050, 051, // 48 - 55
  052, 053, 054, 055, 056, 057, 043, 047); // 56 - 63

 MIME_PAD_CHAR      = Byte ('=');

 MIME_DECODE_TABLE  : array[Byte] of Cardinal = (
  255, 255, 255, 255, 255, 255, 255, 255, //  00 -  07
  255, 255, 255, 255, 255, 255, 255, 255, //  08 -  15
  255, 255, 255, 255, 255, 255, 255, 255, //  16 -  23
  255, 255, 255, 255, 255, 255, 255, 255, //  24 -  31
  255, 255, 255, 255, 255, 255, 255, 255, //  32 -  39
  255, 255, 255, 062, 255, 255, 255, 063, //  40 -  47
  052, 053, 054, 055, 056, 057, 058, 059, //  48 -  55
  060, 061, 255, 255, 255, 255, 255, 255, //  56 -  63
  255, 000, 001, 002, 003, 004, 005, 006, //  64 -  71
  007, 008, 009, 010, 011, 012, 013, 014, //  72 -  79
  015, 016, 017, 018, 019, 020, 021, 022, //  80 -  87
  023, 024, 025, 255, 255, 255, 255, 255, //  88 -  95
  255, 026, 027, 028, 029, 030, 031, 032, //  96 - 103
  033, 034, 035, 036, 037, 038, 039, 040, // 104 - 111
  041, 042, 043, 044, 045, 046, 047, 048, // 112 - 119
  049, 050, 051, 255, 255, 255, 255, 255, // 120 - 127
  255, 255, 255, 255, 255, 255, 255, 255,
  255, 255, 255, 255, 255, 255, 255, 255,
  255, 255, 255, 255, 255, 255, 255, 255,
  255, 255, 255, 255, 255, 255, 255, 255,
  255, 255, 255, 255, 255, 255, 255, 255,
  255, 255, 255, 255, 255, 255, 255, 255,
  255, 255, 255, 255, 255, 255, 255, 255,
  255, 255, 255, 255, 255, 255, 255, 255,
  255, 255, 255, 255, 255, 255, 255, 255,
  255, 255, 255, 255, 255, 255, 255, 255,
  255, 255, 255, 255, 255, 255, 255, 255,
  255, 255, 255, 255, 255, 255, 255, 255,
  255, 255, 255, 255, 255, 255, 255, 255,
  255, 255, 255, 255, 255, 255, 255, 255,
  255, 255, 255, 255, 255, 255, 255, 255,
  255, 255, 255, 255, 255, 255, 255, 255);

type
 PByte4 = ^TByte4;
 TByte4 = packed record
  b1: Byte;
  b2: Byte;
  b3: Byte;
  b4: Byte;
 end;

 PByte3 = ^TByte3;
 TByte3 = packed record
  b1: Byte;
  b2: Byte;
  b3: Byte;
 end;

implementation


function MimeEncodeString (const s: AnsiString): AnsiString;
var
 l                  : Cardinal;
begin
 if Pointer (s) <> nil then
  begin
   l := Cardinal (Pointer (Cardinal (s) - 4)^);
   SetLength (Result, MimeEncodedSize (l));
   MimeEncode (Pointer (s)^, l, Pointer (Result)^);
  end
 else
  Result := '';
end;

function MimeEncodeStringNoCRLF (const s: AnsiString): AnsiString;
var
 l                  : Cardinal;
begin
 if Pointer (s) <> nil then
  begin
   l := Cardinal (Pointer (Cardinal (s) - 4)^);
   SetLength (Result, MimeEncodedSizeNoCRLF (l));
   MimeEncodeNoCRLF (Pointer (s)^, l, Pointer (Result)^);
  end
 else
  Result := '';
end;

function MimeDecodeString (const s: AnsiString): AnsiString;
var
 ByteBuffer, ByteBufferSpace: Cardinal;
 l                  : Cardinal;
begin
 if Pointer (s) <> nil then
  begin
   l := Cardinal (Pointer (Cardinal (s) - 4)^);
   SetLength (Result, (l + 3) div 4 * 3);
   ByteBuffer := 0;
   ByteBufferSpace := 4;
   l := MimeDecodePartial (Pointer (s)^, l, Pointer (Result)^, ByteBuffer, ByteBufferSpace);
   Inc (l, MimeDecodePartialEnd (Pointer (Cardinal (Result) + l)^,
     ByteBuffer, ByteBufferSpace));
   SetLength (Result, l);
  end
 else
  Result := '';
end;

procedure MimeEncodeStream (const InputStream: TStream; const OutputStream: TStream);
var
 InputBuffer : array[0..BUFFER_SIZE - 1] of Byte;
 OutputBuffer : array[0.. (BUFFER_SIZE + 2) div 3 * 4 + BUFFER_SIZE div 
   MIME_DECODED_LINE_BREAK * 2 - 1] of Byte;
 BytesRead : Cardinal;
 IDelta, ODelta : Cardinal;
begin
 BytesRead := InputStream.Read (InputBuffer, SizeOf (InputBuffer));
 
 while BytesRead = SizeOf (InputBuffer) do
  begin
   MimeEncodeFullLines (InputBuffer, SizeOf (InputBuffer), OutputBuffer);
   OutputStream.Write (OutputBuffer, SizeOf (OutputBuffer));
   BytesRead := InputStream.Read (InputBuffer, SizeOf (InputBuffer));
  end;

 MimeEncodeFullLines (InputBuffer, BytesRead, OutputBuffer);
 
 IDelta := BytesRead div MIME_DECODED_LINE_BREAK; // Number of lines processed.
 ODelta := IDelta * (MIME_ENCODED_LINE_BREAK + 2);
 IDelta := IDelta * MIME_DECODED_LINE_BREAK;
 MimeEncodeNoCRLF(Pointer(Cardinal (@InputBuffer) + IDelta)^, BytesRead - IDelta, 
   Pointer (Cardinal (@OutputBuffer) + ODelta)^);
 
 OutputStream.Write (OutputBuffer, MimeEncodedSize (BytesRead));
end;

procedure MimeEncodeStreamNoCRLF (const InputStream: TStream; const OutputStream: TStream);
var
 InputBuffer        : array[0..BUFFER_SIZE - 1] of Byte;
 OutputBuffer       : array[0.. ((BUFFER_SIZE + 2) div 3) * 4 - 1] of Byte;
 BytesRead          : Cardinal;
begin
 BytesRead := InputStream.Read (InputBuffer, SizeOf (InputBuffer));
 while BytesRead = SizeOf (InputBuffer) do
  begin
   MimeEncodeNoCRLF (InputBuffer, SizeOf (InputBuffer), OutputBuffer);
   OutputStream.Write (OutputBuffer, SizeOf (OutputBuffer));
   BytesRead := InputStream.Read (InputBuffer, SizeOf (InputBuffer));
  end;

 MimeEncodeNoCRLF (InputBuffer, BytesRead, OutputBuffer);
 OutputStream.Write (OutputBuffer, (BytesRead + 2) div 3 * 4);
end;

procedure MimeDecodeStream (const InputStream: TStream; const OutputStream: TStream);
var
 ByteBuffer, ByteBufferSpace: Cardinal;
 InputBuffer        : array[0..BUFFER_SIZE - 1] of Byte;
 OutputBuffer       : array[0.. (BUFFER_SIZE + 3) div 4 * 3 - 1] of Byte;
 BytesRead          : Cardinal;
begin
 ByteBuffer := 0;
 ByteBufferSpace := 4;
 BytesRead := InputStream.Read (InputBuffer, SizeOf (InputBuffer));
 while BytesRead > 0 do
  begin
   OutputStream.Write(OutputBuffer, MimeDecodePartial(InputBuffer, BytesRead, 
     OutputBuffer, ByteBuffer, ByteBufferSpace));
   BytesRead := InputStream.Read (InputBuffer, SizeOf (InputBuffer));
  end;
 OutputStream.Write (OutputBuffer, MimeDecodePartialEnd (OutputBuffer, ByteBuffer, 
   ByteBufferSpace));
end;

procedure DecodeHttpBasicAuthentication (const BasicCredentials: AnsiString; out UserId, PassWord: AnsiString);
label
 Fail;
const
 LBasic = 6;                { Length ('Basic ') }
var
 DecodedPtr, p      : PAnsiChar;
 i, l               : Cardinal;
begin
 p := Pointer (BasicCredentials);
 if p = nil then goto Fail;
 
 l := Cardinal (Pointer (p - 4)^);
 if l <= LBasic then goto Fail;
 
 Dec (l, LBasic);
 Inc (p, LBasic);
 
 GetMem (DecodedPtr, (l + 3) div 4 * 3 { MimeDecodedSize (l) });
 l := MimeDecode (p^, l, DecodedPtr^);
 i := 0;
 p := DecodedPtr;
 while (l > 0) and (p[i] <> ':') do
  begin
   Inc (i);
   Dec (l);
  end;
 SetString (UserId, DecodedPtr, i);
 if l > 1 then
  SetString (PassWord, DecodedPtr + i + 1, l - 1)
 else
  PassWord := '';
 
 FreeMem (DecodedPtr);
 Exit;
 
 Fail:
 UserId := '';
 PassWord := '';
end;

function MimeEncodedSize (const i: Cardinal): Cardinal;
begin
 Result := (i + 2) div 3 * 4 + (i - 1) div MIME_DECODED_LINE_BREAK * 2;
end;

function MimeEncodedSizeNoCRLF (const i: Cardinal): Cardinal;
begin
 Result := (i + 2) div 3 * 4;
end;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蓝色福利精品导航| 欧美一区二区三区啪啪| 欧美人牲a欧美精品| 久久精品一二三| 婷婷夜色潮精品综合在线| 国产精品一级黄| 欧美一区二区精品久久911| √…a在线天堂一区| 精品午夜久久福利影院| 欧美日韩国产精品成人| 亚洲少妇最新在线视频| 国产伦精品一区二区三区免费 | 亚洲国产精品视频| 懂色中文一区二区在线播放| 欧美三级乱人伦电影| 亚洲色图视频免费播放| 国产高清在线精品| 精品裸体舞一区二区三区| 天天色综合天天| 欧美视频完全免费看| 亚洲愉拍自拍另类高清精品| 91丨九色丨尤物| 1000精品久久久久久久久| 不卡的av电影在线观看| 国产精品免费网站在线观看| 国产精品一区二区在线播放| 久久夜色精品国产噜噜av| 精品中文字幕一区二区小辣椒| 欧美精品久久一区| 日本伊人色综合网| 4438x成人网最大色成网站| 午夜激情综合网| 777亚洲妇女| 美女高潮久久久| 欧美大片日本大片免费观看| 另类成人小视频在线| 精品久久久久久久人人人人传媒 | 性欧美疯狂xxxxbbbb| 欧美色网站导航| 午夜av电影一区| 日韩午夜激情电影| 久久97超碰国产精品超碰| 精品1区2区在线观看| 国产一区二区三区精品视频| 日本一区二区三区视频视频| 国产91丝袜在线播放0| 国产精品国产精品国产专区不片| 91网站在线观看视频| 亚洲综合一区二区三区| 欧美精品精品一区| 韩国三级电影一区二区| 国产精品网站在线| 在线精品视频一区二区| 日韩国产欧美在线视频| 精品国产三级a在线观看| 成人免费毛片app| 亚洲自拍偷拍网站| 日韩一区二区免费电影| 粉嫩蜜臀av国产精品网站| 亚洲精品中文在线观看| 在线不卡中文字幕播放| 国产一区二区三区在线观看免费| 国产精品乱人伦中文| 欧美亚洲另类激情小说| 玖玖九九国产精品| 亚洲欧洲成人自拍| 精品视频全国免费看| 国产一区二区导航在线播放| 亚洲欧美日本在线| 久久综合九色综合97_久久久| 99久久国产免费看| 六月丁香综合在线视频| 亚洲精品中文字幕在线观看| 精品国产乱码久久久久久久| 91免费视频网| 韩国成人福利片在线播放| 亚洲一区自拍偷拍| 久久久久国产精品麻豆 | 国产91精品精华液一区二区三区| 亚洲精品国久久99热| 精品国产欧美一区二区| 色欧美日韩亚洲| 国产jizzjizz一区二区| 性欧美大战久久久久久久久| 国产精品色噜噜| 久久欧美中文字幕| 91麻豆精品国产91久久久久| 91免费国产在线观看| 国产一区二区三区四区五区入口 | 91精品啪在线观看国产60岁| av午夜精品一区二区三区| 久久se精品一区精品二区| 亚洲国产精品久久艾草纯爱| 亚洲少妇30p| 国产精品网曝门| 久久久.com| 精品欧美乱码久久久久久1区2区| 欧美在线色视频| 色婷婷久久久亚洲一区二区三区| 成人午夜碰碰视频| 国产成人午夜片在线观看高清观看| 亚洲成人激情综合网| 一区二区三区日本| 亚洲久草在线视频| 亚洲人精品一区| 亚洲三级免费电影| 亚洲人吸女人奶水| 亚洲人成亚洲人成在线观看图片 | 日本一区二区电影| 久久久久久影视| 久久久影院官网| 久久久精品tv| 日本一区二区三区在线观看| 国产欧美精品国产国产专区 | 精品精品国产高清一毛片一天堂| 51精品久久久久久久蜜臀| 4438亚洲最大| 精品国产一区二区精华| 日韩一级精品视频在线观看| 日韩写真欧美这视频| 欧美一三区三区四区免费在线看| 欧美精品高清视频| 欧美成人午夜电影| 久久免费电影网| 欧美国产激情二区三区| 亚洲天堂福利av| 亚洲精品亚洲人成人网| 亚洲综合清纯丝袜自拍| 五月天激情综合| 久久国产免费看| 国模娜娜一区二区三区| 成人理论电影网| 欧美视频在线不卡| 欧美一区二区三区视频免费| 久久综合九色综合欧美98| 国产精品久久久久久久久图文区 | 亚洲美女淫视频| 亚洲小说欧美激情另类| 麻豆91在线播放| 粉嫩绯色av一区二区在线观看| 91精品办公室少妇高潮对白| 91麻豆精品国产91久久久资源速度| 日韩一区二区三区电影在线观看 | 日韩不卡一区二区三区| 国产成人鲁色资源国产91色综| 成人精品电影在线观看| 91国产成人在线| 精品免费视频.| 亚洲视频一区在线| 美国毛片一区二区| 99综合影院在线| 欧美一级二级三级蜜桃| 中文字幕亚洲视频| 日韩二区在线观看| 99精品一区二区| 精品国产一区二区三区不卡 | 九九在线精品视频| 91视频免费看| 2023国产精品| 亚洲在线成人精品| 粉嫩av一区二区三区粉嫩| 69堂成人精品免费视频| 国产精品家庭影院| 国产真实乱偷精品视频免| 91精品91久久久中77777| 国产午夜精品久久久久久免费视 | 欧美精品一区二区蜜臀亚洲| 亚洲欧洲在线观看av| 精品亚洲成av人在线观看| 欧美日韩视频在线一区二区| 国产精品久久午夜| 麻豆国产精品官网| 欧美日韩一区二区在线观看 | 日韩一区精品字幕| 色综合一个色综合| 欧美极品另类videosde| 蜜桃视频免费观看一区| 在线观看国产日韩| 自拍偷拍国产亚洲| 国产成人8x视频一区二区| 日韩欧美的一区二区| 天天色天天操综合| 欧美私人免费视频| 亚洲美女免费在线| www.久久久久久久久| 久久亚洲欧美国产精品乐播| 日本vs亚洲vs韩国一区三区二区| 日本高清无吗v一区| 亚洲欧美在线另类| 国产精品影音先锋| 国产三级一区二区| 国产电影精品久久禁18| 久久久综合视频| 国产黄人亚洲片| 亚洲国产精品ⅴa在线观看| 国产精品一区二区黑丝| 国产日本欧美一区二区| 国产电影精品久久禁18| 中文字幕av不卡| 99久久免费精品高清特色大片|