一、PDU编码
function Encode2(var s: WideString): String; //中文编码转PDU格式
var
i,len:Integer;
cur:Integer;
t:String;
begin
Result:='';
len:=Length(s);
i:=1;
while i<=len do
begin
cur:=ord(s[i]);
FmtStr(t,'%4.4X',[cur]); //BCD转换
Result:=Result+t;
inc(i);
end;
end;
二、PDU解码
function TForm1.DecodeChinese(SRC: String): string; //中文解码
var i:Integer;
S:String;
D:WideChar;
ResultW:WideString;
begin
for i:=1 to Round(Length(Src)/4) do begin
S:=Copy(Src,(i-1)*4+1,4);
D:=WideChar(StrToInt('$'+s)); //此处是重点,用delphi提供的widechar可以转换
ResultW:=ResultW+D;
end;
Result:=ResultW;
end;