(*********************取16进制字符的10进制的integer值*******************)
function HexToInt(HexStr:String):Integer;
var
i,TempInt,LocalInt:Integer;
begin
HexStr:=UpperCase(HexStr);
LocalInt:=1;
Result:=0;
for i:=Length(HexStr) downto 1 do
begin
if HexStr[i] in ['0'..'9'] then
TempInt:=StrToInt(HexStr[i])
else
TempInt:=Ord(HexStr[i])-Ord('A')+10;
if i=Length(HexStr) then
LocalInt:=1
else
LocalInt:=LocalInt*16;
Result:=Result+TempInt*LocalInt;
end;
end;
//*********************取16进制字符的10进制的integer值**************
{
***********************格式化输出********************************
}
function TFcomm.FormatHexDisp(const asHex: string): string;
var
k, iLen:integer;
begin
Result:= asHex;
iLen:=length(Result);
if (iLen mod 2)=1 then
begin
Result := '0' + Result;
Inc(iLen);
end;
for k:=iLen downto 1 do
begin
if (k mod 2)=1 then Continue;
Insert(' ', Result, k - 1);
end;
Result := Trim(Result);
end;
{
***********************格式化输出********************************
}
{
*******************字符转成ASCII码16进制的值**************************
}
function TFcomm.GetHex(const aStr: string): string;
var
k: Integer;
begin
for k := 1 to Length(aStr) do
begin
Result := Result + Format('%.2x', [Ord(aStr[k])]);
end;
end;
{
*******************字符转成ASCII码16进制的值**************************
}
{
****************Unicode码转换成ASCII码***************
}
function TFcomm.UnicodeHexToStr(const asUnicodeHex: string): string;
var
i: Integer;
sTemp: string;
begin
for i := 1 to Length(asUnicodeHex) do
begin
if i mod 4 = 0 then
begin
sTemp := Copy(asUnicodeHex, i - 3, 4);
sTemp := WideChar(StrToIntDef('$' + sTemp, 0));
Result := Result + sTemp;
end;
end;
end;
function DecodeUniCode(s:String):WideString;
var
p:PWord;
i,len:Integer;
TempChar:WideChar;
t:String;
begin
New(p);
Result:='';
len:=Length(s) div 4;
for i:=0 to Len-1 do
begin
t:=Copy(s,4*i+1,4);
p^:=HexToInt(t);
Move(p^,TempChar,2);
Result:=Result+TempChar;
end;
Dispose(p);
end;