日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

delphi base64 java_Base64以及delphi、Java实现[转]

發布時間:2025/3/20 java 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 delphi base64 java_Base64以及delphi、Java实现[转] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

//Base64編碼

function?TfrmBase1.Encode_Base64(AValue:?string):?string;

var

I?????????:?Integer;

TmpChar,

CurrentChar,????????//當前要加密的字符

NextChar,

ThirdChar?:?Byte;???//下一個要加密的字符

ResString?:?string;?//存放Base64以后的臨時結果

Count?????:?Integer;

begin

Result?:=?'';

ResString?:=?'';

Count?:=?Length(AValue);

I?:=?1;

if?AValue?<>?''?then

begin

repeat

//1、將第一個字符右移兩位并取得其對應Base64表中的目標字符

CurrentChar?:=?Ord(AValue[I]);?????????????//取得第一個字符在ASCII表中的序號

I?:=?I?+?1;

Dec(Count);????????????????????????????????//每進入一次循環計數器減1

TmpChar?:=?CurrentChar?shr?2;??????????????//右移兩位因為只取其前六位,數值上相當于除4

ResString?:=?ResString?+?Base64Table[TmpChar?+?1];?????//加1是因為Base64表中是從0開始

//2、將當前字符左移四位加上下一個字符右移四位?獲得下一個要的字符

//如果此時已超過字符串長度則賦0

if?Count?=?0?then

NextChar?:=?0

else

begin

NextChar?:=?Ord(AValue[I]);

I?:=?I?+?1;

end;

Dec(Count);????????????????????????????????//每進入一次循環計數器減1

TmpChar?:=?((CurrentChar?and?$03)?shl?4)?+?(NextChar?shr?4);

ResString?:=?ResString?+?Base64Table[TmpChar?+?1];

//3、第二個字符左移2位加上第三個字符右移6位,獲得第三個目標字符

if?Count?

ResString?:=?ResString?+?'='

else

begin

begin

if?Count?=?0?then

ThirdChar?:=?0

else

begin

ThirdChar?:=?Ord(AValue[I]);

I?:=?I?+?1;

end;

end;

Dec(Count);????????????????????????????????//每進入一次循環計數器減1

TmpChar?:=?((NextChar?and?$0F)?shl?2)?+?(ThirdChar?shr?6);

ResString?:=?ResString?+?Base64Table[TmpChar?+?1];

end;

//4、取第三個字符的后六位

if?Count?

ResString?:=?ResString?+?'='

else

begin

TmpChar?:=?ThirdChar?and?$3F;

ResString?:=?ResString?+?Base64Table[TmpChar?+?1];

end;

Result?:=?ResString;

until?Count?<=?0;

end;

end;

//Base64解碼

function?TfrmBase1.DeEncode_Base64(AValue:?string):?string;

var

I?????????:?Integer;

TmpChar???:?Char;

CurrentChar,????????//當前要加密的字符

NextChar,

ThirdChar?:?Byte;???//下一個要加密的字符

ResString?:?string;?//存放Base64以后的臨時結果

Count?????:?Integer;//作為計數器使用

begin

Result?:=?'';

ResString?:=?'';

Count?:=?0;

//提前判斷要解碼的字符串是否正常

for?I?:=?0?to?Length(AValue)?-?1?do

begin

if?Pos(AValue[I?+?1],?Base64TableCheck)?=?0?then

begin

Application.MessageBox('Base64解碼錯誤,原因:有字符越界!',?'解碼出錯',

MB_OK?+?MB_ICONSTOP);

Exit;

end;

end;

I?:=?1;?????????????????//放在循環之后

if?AValue?<>?''?then

begin

repeat

//第一次轉換

if?Count?<=?Length(AValue)?then

begin

TmpChar?:=?AValue[I];

I?:=?I?+?1;

inc(Count);

CurrentChar?:=?Pos(TmpChar,?Base64Table)?-?1;?//此處因Base64表從0開始

TmpChar?:=?AValue[I];

NextChar?:=?Pos(TmpChar,?Base64Table)?-?1;

ResString?:=?ResString?+?chr((CurrentChar?shl?2)?+?(NextChar?shr?4));

end;

//2

I?:=?I?+?1;

inc(Count);

if?Count?<=?Length(AValue)?then

begin

TmpChar?:=?AValue[I];

if?TmpChar?<>?'='?then

begin

ThirdChar?:=?Pos(TmpChar,?Base64Table)?-?1;

ResString?:=?ResString?+?chr((NextChar?shl?4)?+?(ThirdChar?shr?2));

end;

end;

//3

I?:=?I?+?1;

inc(Count);

if?Count?<=?Length(AValue)?then

begin

TmpChar?:=?AValue[I];

if?TmpChar?<>?'='?then

begin

CurrentChar?:=?Pos(TmpChar,?Base64Table)?-?1;

ResString?:=?ResString?+?chr((ThirdChar?shl?6)?+?(CurrentChar));

end;

end;

I?:=?I?+?1;????//此處一定要注意增加變量

inc(Count);

until?Count?>=?Length(AValue);

Result?:=?ResString;

end;

end;

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的delphi base64 java_Base64以及delphi、Java实现[转]的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。