我想求一个函数,十六进制转ASCII码字符。(100分)

  • 主题发起人 主题发起人 jkoala
  • 开始时间 开始时间
J

jkoala

Unregistered / Unconfirmed
GUEST, unregistred user!
[:(] 求此函数: 例如: Funcname(39)='9' Funcname(3A)=':'
 
chr($39)
chr($3A)
 
看我在下面的回答,不过不是 16 进制,而是 10 进制。
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1635057
 
给你写了一个 十六进制数 转为 十进制数 的函数,结合上面的那个 十进制数 转 ASCII 的代码
就可以完成你的全部的要求了:
function TForm1.HexToInt(Hex: String): Integer;
var
HexStr:PChar; i:integer; j:Real;
begin
GetMem(HexStr,(Length(Hex)+1));
StrPCopy(HexStr,UpperCase(Hex));
j:=0;
for i:=0 to Length(Hex)-1 do
begin
if Ord(HexStr[Length(Hex)-1-i])> 64 then
j:= j + (Ord(HexStr[Length(Hex)-1-i])-55)*Exp(Ln(16)*i)
else
j:=j + (Ord(HexStr[Length(Hex)-1-i])-48)*Exp(Ln(16)*i);
end;
Result:=Round(j);
FreeMem(HexStr);
end;
呵呵,别告诉我不会用哦 :-)
 
你实在要一个 十六进制 的,我倒是可以写一个,一行搞定:

function Funcname(HexInt: Integer): Char;
begin
Result := Chr(StrToIntDef('$' + IntToStr(HexInt), Ord('.')));
end;

使用:
ShowMessage(Funcname(39)); // '9'
ShowMessage(Funcname(3A)); // ':'
 
function Funcname(HexInt: Integer): Char;
begin
Result := Chr(StrToIntDef('$' + IntToStr(HexInt), Ord('.')));
end;
 
后退
顶部