hz编码与解码 (2001年4月19日).txt

来自「自己对DELPHI学习的一点体会」· 文本 代码 · 共 81 行

TXT
81
字号
HZ编码与解码 (2001年4月19日) 

网友更新  分类:数据库   作者:Icebird  推荐:Icebird   阅读次数:261  
(http://www.codesky.net)  

--------------------------------------------------------------------------------
{HZ编码}
function HZEncode(s: string): string;
var
i: Integer;
Flag: Integer;
begin
Result := '';
Flag := 0;
for i := 1 to Length(s) do
begin
if Ord(s[i]) > 127 then
Inc(Flag)
else
Flag := -Flag;
if Flag > 0 then
if Flag = 1 then
begin
Result := Result + '~{';
Result := Result + Chr(Ord(s[i]) - 128);
end
else
Result := Result + Chr(Ord(s[i]) - 128)
else
if Flag < 0 then
begin
Result := Result + '~}';
Result := Result + s[i];
Flag := 0;
end
else
Result := Result + s[i];
end;
if Flag > 0 then
Result := Result + '~}';
end;
{HZ编码}

{HZ解码}
function HZDecode(s: string): string;
var
i: Integer;
Flag: Integer;
Skip: Integer;
begin
Flag := 0;
Skip := 0;
Result := '';
for i := 1 to Length(s) do
begin
if (s[i] = '~') then
begin
if (s[i + 1] = '{') and (Flag = 0) then
begin
Flag := 1;
Skip := Skip + 2;
end;
if (s[i + 1] = '}') and (Flag = 1) then
begin
Flag := 0;
Skip := Skip + 2;
end;
end;
if Skip > 0 then
Dec(Skip)
else
if Flag = 0 then
Result := Result + s[i]
else
Result := Result + Chr(Ord(s[i]) + 128);
end;
end;
{HZ解码}
 
 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?