亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产色综合一区| 欧美高清视频不卡网| 亚洲成人你懂的| 亚洲精品在线电影| 亚洲.国产.中文慕字在线| 精品国精品自拍自在线| 色婷婷久久99综合精品jk白丝| 午夜精品视频在线观看| 久久蜜桃av一区二区天堂| 国产成人免费视频| 奇米影视一区二区三区小说| 国产精品网站在线播放| 欧美日韩高清不卡| 国产精品1区2区| 亚洲第一搞黄网站| 国产精品天天看| 欧美一区二区三区日韩视频| 99久久伊人精品| 国产呦精品一区二区三区网站| 一区二区久久久久久| 久久亚洲一级片| 在线观看成人免费视频| 成人av影院在线| 国内精品久久久久影院薰衣草| 日产欧产美韩系列久久99| 成人免费一区二区三区视频 | 成人福利视频在线| 视频在线观看一区| 亚洲蜜桃精久久久久久久| 国产精品网站在线| 久久亚洲捆绑美女| 日韩一级片在线观看| 欧美情侣在线播放| 一本色道久久综合亚洲91| 99热精品国产| 成人动漫av在线| 麻豆91免费看| 久久不见久久见免费视频1| 亚洲小说欧美激情另类| 亚洲综合在线第一页| 中文字幕一区二区三区不卡在线| 久久久久成人黄色影片| 欧美精品一区二区三区在线播放 | 91久久精品一区二区二区| 国产成人福利片| 成人免费福利片| 成人黄动漫网站免费app| a亚洲天堂av| 99久久精品免费看国产| 不卡区在线中文字幕| 99re8在线精品视频免费播放| 成人av高清在线| 韩国女主播成人在线| 激情综合一区二区三区| 亚洲欧美激情小说另类| 亚洲精品视频免费看| 亚洲情趣在线观看| 一二三四社区欧美黄| 亚洲一区影音先锋| 日韩在线播放一区二区| 免费在线观看日韩欧美| 国产毛片精品一区| 国产成人丝袜美腿| 成人精品电影在线观看| 欧美在线视频全部完| 欧美色网一区二区| 午夜亚洲福利老司机| 久久成人免费日本黄色| 国产精品亚洲综合一区在线观看| 白白色 亚洲乱淫| 欧美性淫爽ww久久久久无| 一本久久精品一区二区| 欧美久久久久中文字幕| 26uuu精品一区二区三区四区在线| 亚洲国产成人自拍| 一区二区三区精品在线观看| 亚洲一区二区在线免费观看视频| 日本不卡的三区四区五区| 韩国女主播成人在线| 色88888久久久久久影院按摩| 欧美日韩国产另类不卡| 91麻豆精品国产91久久久资源速度 | 欧美日韩一区二区三区免费看| 欧美成人aa大片| 欧美国产日韩一二三区| 亚洲成人免费在线| 国产一区激情在线| 99v久久综合狠狠综合久久| 56国语精品自产拍在线观看| 久久综合色天天久久综合图片| 亚洲视频狠狠干| 免费在线成人网| 国产成人午夜视频| 欧美日韩aaaaa| 久久亚洲精品国产精品紫薇| 亚洲自拍偷拍九九九| 老司机午夜精品| 国产成人在线看| 欧美精品久久天天躁| 久久久久久久久岛国免费| 亚洲妇女屁股眼交7| 精品一区二区三区香蕉蜜桃| 99综合影院在线| 久久色成人在线| 一区二区三区四区视频精品免费| 国产原创一区二区三区| 欧美日韩免费观看一区三区| 久久久久久久综合色一本| 五月天亚洲婷婷| aaa国产一区| 国产欧美一区二区三区在线看蜜臀 | 国产精品免费久久| 亚洲成av人片在线| 91啪亚洲精品| 国产亚洲一区二区三区在线观看| 日韩中文字幕av电影| 91一区一区三区| 日韩欧美国产一区二区在线播放 | 三级成人在线视频| 成人黄页毛片网站| 国产欧美综合色| 蜜臀91精品一区二区三区| 欧美裸体一区二区三区| 亚洲视频免费看| 国产乱子伦视频一区二区三区 | 久久精品视频网| 亚洲午夜久久久久中文字幕久| 不卡的电视剧免费网站有什么| 欧美一区二区成人| 亚洲欧美区自拍先锋| av电影天堂一区二区在线| 国产免费观看久久| 国内外精品视频| 久久一区二区三区四区| 日韩精品一二区| 日韩欧美激情一区| 免费人成网站在线观看欧美高清| 99免费精品在线| 亚洲另类色综合网站| 99国产精品国产精品毛片| 日韩理论片在线| 91视频国产观看| 国产视频亚洲色图| 国产传媒日韩欧美成人| 久久久91精品国产一区二区精品| 国产成人av电影免费在线观看| 久久久蜜桃精品| 99久久综合99久久综合网站| 中文字幕中文字幕一区| 91亚洲国产成人精品一区二三| 亚洲视频一二三| 91看片淫黄大片一级| 亚洲高清不卡在线| 欧美日韩高清一区二区| 麻豆精品在线看| 久久免费视频一区| 懂色av一区二区在线播放| 中文字幕色av一区二区三区| 9色porny自拍视频一区二区| 亚洲成人动漫一区| 欧美肥大bbwbbw高潮| 国产剧情一区在线| 日本一区二区免费在线| 国产一区二区三区四区五区入口| 国产亚洲1区2区3区| 成人亚洲一区二区一| 亚洲综合色区另类av| 欧美日韩国产一级片| 九色综合狠狠综合久久| 国产日韩视频一区二区三区| 激情亚洲综合在线| 国产精品久久久久婷婷| 91丨国产丨九色丨pron| 男人的天堂亚洲一区| 久久精品水蜜桃av综合天堂| 日本韩国精品在线| 五月婷婷激情综合网| 日韩一级视频免费观看在线| 久草精品在线观看| 精品国产乱码久久久久久影片| 成人激情小说网站| 成人自拍视频在线| 久久久精品国产免费观看同学| 国产精品一区专区| 国产精品国产精品国产专区不片| 欧美日韩高清不卡| 国产精品一区二区三区99| 一区二区三区蜜桃| 欧美zozo另类异族| 色综合天天综合在线视频| 肉色丝袜一区二区| 久久综合成人精品亚洲另类欧美 | 亚洲综合成人在线| 精品少妇一区二区三区日产乱码 | 亚洲日本成人在线观看| 欧美一区二区大片| 色综合天天综合给合国产| 日韩精品乱码av一区二区| 欧美激情资源网| 欧美精品三级在线观看|