如何把一个16进制数转换成ASCII码(100分)

  • 主题发起人 主题发起人 讨饭秀才
  • 开始时间 开始时间

讨饭秀才

Unregistered / Unconfirmed
GUEST, unregistred user!
有必要转换吗?
如果想根据该十六进制数转换成字符可以这样用
edit1.text:= char($0030)
edit1显示字符'0'
0的ascii码是48就是$0030
 
代码:
ShowMessage(IntToHex($FFFF0000));
 
用char
IntToHex是以十六进制的格式显示。
 
function Hex2Char(HexStr:String):Char;
begin
Result:=Char(StrToInt('$'+HexStr));
end;

eg: Hex2Char('5A')
-> 'Z'
 
Function ByteToChar(_B:Byte):String
// 字节
Begin
If (_B<=32) Then
Result:=' ' // 表示显示不出来的ASCII
Else
Result:=Chr(_B);
End;

Function WordToChar(_W:Word):String
// 字
Begin
Result:=ByteToChar(Hi(_W))+ByteToChar(Lo(_W));
End;

Function DWordToChar(_D:DWord):String
// 双字
Var
_Wh ,
_Wl : Word;
Begin
_Wh:=Word(_D Shr 16);
_Wl:=_D And $ffff;
Result:=WordToChar(_Wh)+WordToChar(_Wl);
End;

procedure TForm1.Button1Click(Sender: TObject);//例子
Var
d:dword;
begin
d:=$4142004a
// "AA J" , 小于等于空格的用空格显示
showmessage(DWordToChar(D));
end;
 
后退
顶部