搜档网
当前位置:搜档网 › 10进制与16进制之间的转换

10进制与16进制之间的转换

10进制与16进制之间的转换 delphi delphi中有直接把10进制转换成16进制的函数:

function IntToHex(Value: Integer; Digits: Integer): string; overload;
function IntToHex(Value: Int64; Digits: Integer): string; overload;

使用方法为:

procedure TForm1.Button1Click(Sender: TObject);
var
i,m: Integer;
begin
Label1.Caption := '';
for i := 1 to Length(Edit1.Text) do
begin

m := StrToInt(Edit1.Text[i]));
edit2 := IntToHex(StrToInt(Edit1.Text[i]),2)+ '';
edit3 := IntToHex(m,2);
end;
end;


然而,delphi中却没有把16进制直接转换成10进制的函数,将16进制转换成10进制需要自己定义函数,这是自己编写的一个,不当之处还请指出:

unit Unit1;
{
16进制与10进制的相互转换
}
interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);


private
function HexToInt(str:string):word;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.FormCreate(Sender: TObject);
begin
edit1.Clear;
edit2.Clear;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
str : string;
begin
if edit1.Text<>'' then
if edit2.Text<>'' then
begin
messageBox(handle,'只能输入一个数字,请重新输入','警告',MB_ok);
edit1.Clear;
edit2.Clear;
end
else
begin
edit2.Text:= IntToHex(strtoint(edit1.Text),4);
end
else
if edit2.text='' then
begin
messageBox(Handle,'请输入数字','警告!',MB_ok);
end
else
begin
str := edit2.Text ;
edit1.Text := IntToStr(HexToInt(str));
end;
end;


function TForm1.HexToInt (str:string) : word;
var
i , value : word;
pos : word;

begin
value:=0;
pos:=length(str);
for i:=1 to pos do
begin
case str[i] of
'f','F':
value := value*16+15;
'e','E':
value := value*16+14;
'd','D':
value := value*16+13;
'c','C':
value := value*16+12;
'b','B':
value := value*16+11;
'a','A':
value := value*16+10;
'0'..'9':
value := value*16+ord(str[i])-ord('0');
else
result:=value;
exit;
end;
result:=value;
end;

end;


procedure TForm1.Button2Click(Sender: TObject);
begin
Application.Termi

nate;
close;
end;

end.



相关主题